1

私はApacheをEC2インスタンスにAnecessを通してインストールしようとしています。不可能な方法でApacheをインストールする

# Configure and deploy Apache 
- hosts: localhost 
    connection: local 
    remote_user: ec2-user 
    gather_facts: false 
    roles: 
    - ec2_apache 
    - apache 

のapache/main.yml内のEC2インスタンスと最初のタスクは、次のようになります "ec2_apacheの役割条項:

- name: confirm using the latest Apache server 
    become: yes 
    become_method: sudo 
    yum: 
    name: httpd 
    state: latest 

しかし、私は取得しています私の脚本は、このようになりますエラー以下:

"module_stderr": "sudo: a password is required\n" 

私はを見てみました:How to switch a user per task or set of tasks?が、私の問題を解決していないようでした。

Ec2インスタンスの設定が1つの役割にあり、Apacheのインストールが別のものになっているため、何らかの方法でセキュリティを強化しましたか?

+1

インスタンスを 'ec2-user'として使用しているときに' sudo'を使うときにパスワードが必要ですか? – ydaetskcoR

+0

いいえ、新しく作成されたインスタンスにsshを実行すると、基本的な 'sudo ls/etc'を実行できます。私がオンラインで見つけた例とStackOverflowで見つけた例では、EC2を作成してからソフトウェアの一部をインストールするか、別々の役割の中にインストールすることに取り組んでいません。 –

答えて

2

あなたが持っている問題は、両方の役割を実行するあなたのプレイブックがlocalhostをターゲットにしているため、あなたのApacheの役割がターゲットのEC2インスタンスではなくsudo yum install httpdをローカルで実行しようとしているからです。

ec2 module docsの例では、add_hostモジュールを使用して新しいEC2インスタンスをグループに追加する必要があることがわかります

だからあなたの脚本は、次のようなものになります。ちょうどあなたのec2_apache役割でこのような何かを、EC2モジュールのドキュメントに

# Configure and deploy Apache 
- name: provision instance for Apache 
    hosts: localhost 
    connection: local 
    remote_user: ec2-user 
    gather_facts: false 
    roles: 
    - ec2_apache 

- name: install Apache 
    hosts: launched 
    remote_user: ec2-user 
    roles: 
    - apache 

そして、例のように:

- name: Launch instance 
    ec2: 
    key_name: "{{ keypair }}" 
    group: "{{ security_group }}" 
    instance_type: "{{ instance_type }}" 
    image: "{{ image }}" 
    wait: true 
    region: "{{ region }}" 
    vpc_subnet_id: subnet-29e63245 
    assign_public_ip: yes 
    register: ec2 

- name: Add new instance to host group 
    add_host: hostname={{ item.public_ip }} groupname=launched 
    with_items: ec2.instances 

- name: Wait for SSH to come up 
    wait_for: host={{ item.public_dns_name }} port=22 delay=60 timeout=320 state=started 
    with_items: ec2.instances 

さて、あなたのec2_apacheロールは実際にはかなり一般的であり、これを汎用のec2_provisionロールに変えて、あらゆる種類の他のものが使用することができ、コードを再利用できるようにすることができます。

+0

私はそのショットを与えたが、喜びはなかった。いずれの場合も、次のように表示されます。致命的:[xxx.xxx.xx.xx]:FAILED! "module_stderr": "sudo:パスワードが必要です\ n"、 "module_stdout": ""、 "msg": "MODULE FAILURE"、 "parsed": false}ここで 'xx.xxx.xx.xxx'は通信しようとしているEC2インスタンスです。これはAnabilitiesが正しいEC2ホストに対して作業していることを意味しますか? –

関連する問題