• ..

Docker

    リモートから Hello する

    マシンは EC2 を使います。流れは、

    1. インベントリファイルを作る
    2. Role (実際の処理を書く)ファイルを作る
    3. ec2.ymlファイルを作る
    4. 確認

    インベントリファイル

    このファイルにターゲットにするマシンのipアドレスや変数などを設定していきます。hostsというファイルにしている例が多いと思います。

    [ec2]
    x.x.x.x

    ec2というグループにx.x.x.xというipアドレスのマシンを設定しています。これはec2グループに対しての処理の時に、羅列したipアドレスのマシンすべての処理を流す感じになります。

    Role

    処理を細かく細分化する為に使います。ここでは数行なので必要ない感じですが、こちらに慣れたほうが便利だと思うので使ってみます。

    Role は、roles/role-name/tasks/main.ymlというようなファイルに書いていきます。例えば、roles/ec2/tasks/main.ymlというファイルを作ります。その中身はこのようにします。

    ---
    - name: Hello
      shell: echo hello from ec2 by ansible
      register: result
    - debug: var=result.stdout
      when: result

    リモートで表示したものをローカルで確認するタスクです。つまり、ローカルでhello from ec2 by ansibleと出すためのタスクです。

    ec2.yml

    名前は何でもいいですが、ec2グループに対して実行するのでec2.ymlにします。rolesec2を含めることで、roles/ec2/tasks/main.ymlを実行するように設定します。

    ---
    - hosts: ec2
      roles:
        - ec2

    確認

    以下のオプションを指定して実行します。

    • -iは、見るインベントリファイル
    • -uは、sshする時のユーザー名
    • --private-keysshするときの秘密鍵
    ansible-playbook ec2.yml -i hosts -u ec2-user --private-key=~/.ssh/id_rsa 
    
    PLAY [ec2] ****************************************************************************************************************
    
    TASK [Gathering Facts] ****************************************************************************************************
    ok: [x.x.x.x]
    
    TASK [ec2 : Hello] ********************************************************************************************************
    changed: [x.x.x.x]
    
    TASK [ec2 : debug] ********************************************************************************************************
    ok: [x.x.x.x] => {
        "result.stdout": "hello from ec2 by ansible"
    }
    
    PLAY RECAP ****************************************************************************************************************
    x.x.x.x              : ok=3    changed=1    unreachable=0    failed=0

    ちゃんとログがでれば完了です。