2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

楽するためにAnsibleで一括実行しよう

Last updated at Posted at 2024-05-18

はじめに

複数のVMにログインして同じコマンド何度もを打つのは面倒ですね.Ansibleを使えば一括で実行できることがわかったので,そのログです.

環境

Rocky Linux release 8.9 (Green Obsidian)内にインストールしたRocky Linux release 9.4 (Blue Onyx)のLinuxVM

手順

  1. Ansibleのインストール:

    sudo dnf install ansible -y
    

    not foundの場合、epel-releaseを有効にしてください。

    sudo dnf install epel-release
    
  2. インベントリファイルの作成:
    Ansibleが管理するVMのリストを定義する。
    /etc/ansible/hostsに以下の内容を追加する。
    ansible_userはそれぞれ適切なものに変更すること。ssh ここの部分@172.16.1.1

    [myvms]
     vm1 ansible_host=172.16.1.1 ansible_user=admin
     vm2 ansible_host=172.16.1.2 ansible_user=admin
     vm3 ansible_host=172.16.1.3 ansible_user=admin
     vm4 ansible_host=172.16.1.4 ansible_user=admin
    
  3. Playbookの作成:
    実行したいコマンドを定義したYAMLファイルを作成する。例えば、myplaybook.ymlというファイルを作成し、以下の内容を記載する。
    YAML(YAML Ain't Markup Language)(.yml or .yaml):異なるソフトウェア間のデータ交換で使うファイル。要するにプログラムが読み取りやすい言語。

    - hosts: myvms
      tasks:
        - name: say ho
          command: echo "ho"
    

    YAMLの定義にYAMLが出てきてるから変な感じ。

  4. Playbookの実行:
    Ansible Playbookを実行して、コマンドをすべてのVMに適用する。

    ansible-playbook myplaybook.yml
    

    標準出力を見たいならこう。

    ansible-playbook myplaybook.yml -v
    

    こうなれば成功。

     PLAY [myvms] ************************************************************************************************************************************************
     
     TASK [Gathering Facts] **************************************************************************************************************************************
     ok: [vm2]
     ok: [vm1]
     ok: [vm3]
     ok: [vm4]
     
     TASK [say ho] ***********************************************************************************************************************************************
     changed: [vm2] => {"changed": true, "cmd": ["echo", "ho"], "delta": "0:00:00.002864", "end": "2024-05-19 01:19:05.400496", "msg": "", "rc": 0, "start": "2024-05-19 01:19:05.397632", "stderr": "", "stderr_lines": [], "stdout": "ho", "stdout_lines": ["ho"]}
     changed: [vm1] => {"changed": true, "cmd": ["echo", "ho"], "delta": "0:00:00.003441", "end": "2024-05-19 01:19:05.398650", "msg": "", "rc": 0, "start": "2024-05-19 01:19:05.395209", "stderr": "", "stderr_lines": [], "stdout": "ho", "stdout_lines": ["ho"]}
     changed: [vm4] => {"changed": true, "cmd": ["echo", "ho"], "delta": "0:00:00.002860", "end": "2024-05-19 01:19:05.401005", "msg": "", "rc": 0, "start": "2024-05-19 01:19:05.398145", "stderr": "", "stderr_lines": [], "stdout": "ho", "stdout_lines": ["ho"]}
     changed: [vm3] => {"changed": true, "cmd": ["echo", "ho"], "delta": "0:00:00.002873", "end": "2024-05-19 01:19:05.406218", "msg": "", "rc": 0, "start": "2024-05-19 01:19:05.403345", "stderr": "", "stderr_lines": [], "stdout": "ho", "stdout_lines": ["ho"]}
     
     PLAY RECAP **************************************************************************************************************************************************
     vm1                        : ok=2    changed=1    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0
     vm2                        : ok=2    changed=1    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0
     vm3                        : ok=2    changed=1    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0
     vm4                        : ok=2    changed=1    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0
    

    ansibleを使いこなせば、VMにssh接続して実行、別のVMに接続して実行...なんてしなくてよくなりますね!

引っ掛かりポイント

ansible-playbookの結果、unreachable=1になる

各環境に公開鍵認証でssh接続できるのが前提となります。
鍵生成→鍵を渡す→各VMのsshd.confingを変更してパスワード認証をnoにする

2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?