🏭

今更始めてみるAnsible - (1) 環境構築とHello World!

2023/05/24に公開

Ansibleとは

公式サイトには、

Ansible は、プロビジョニング、構成管理、アプリケーションのデプロイメント、オーケストレーション、その他多くの IT プロセスを自動化する、オープンソースの IT 自動化エンジンです。

と書かれています。さっくり私の理解としては、

1つの統括的なサーバを用意しておけば、別PCのセットアップを自動化(openssh-serverのインストールだけは手動)できる

みたいなところを想定して、利用しようとしています。

Ansibleのインストール方法

  1. Ansibleのインストール

    sudo apt update
    sudo apt install software-properties-common
    sudo apt-add-repository --yes --update ppa:ansible/ansible
    sudo apt install ansible
    
  2. インストールされたバージョンの確認

    ansible --version
    
  3. 実行結果

    $ ansible --version
    ansible [core 2.12.10]
      config file = /etc/ansible/ansible.cfg
      configured module search path = ['/home/kutei/.ansible/plugins/modules', '/usr/share/ansible/plugins/modules']
      ansible python module location = /usr/lib/python3/dist-packages/ansible
      ansible collection location = /home/kutei/.ansible/collections:/usr/share/ansible/collections
      executable location = /usr/bin/ansible
      python version = 3.8.10 (default, Mar 15 2022, 12:22:08) [GCC 9.4.0]
      jinja version = 2.10.1
      libyaml = True
    

ノード(対象ホスト)の最低限の設定

  1. ssh-serverのインストール

    sudo apt install openssh-server
    
  2. fingerprintを設定させる
    各ホストに一度ssh接続しておく。fingerprintの確認をOFFをdisableしても良いが、どうせ一度ぐらい疎通確認すると思うので、セキュリティ的にも誤った対象にしないためにも、fingerprint登録してしまったほうが良い。

    ssh user_name@192.168.126.128
    ssh user_name@192.168.126.129
    

ホストの設定ファイルを作成

環境構築対象とするホスト情報を記載したファイルを作成。

hosts.yml
group_name:
  hosts:
    vm-01:
      ansible_host: 192.168.126.128
      ansible_user: user_name
      ansible_password: user_password
    vm-02:
      ansible_host: 192.168.126.129
      ansible_user: user_name
      ansible_password: user_password

上記が最もプリミティブな書き方。しかし、以下のようにしてサボることもできる。

hosts.yml
group_name:
  vars:
    ansible_user: user_name
    ansible_password: user_password
  hosts:
    vm-01:
      ansible_host: 192.168.126.128
    vm-02:
      ansible_host: 192.168.126.129

ansibleIPアドレスを確認してみる

下記のコマンドを実行して、対象ノードのネットワークI/Fの状態を確認してみる。

ansible group_name -i hosts.yml -m ansible.builtin.command -a "ip a"

実行結果

vm-02 | CHANGED | rc=0 >>
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host
       valid_lft forever preferred_lft forever
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
    link/ether 00:0c:29:01:2d:60 brd ff:ff:ff:ff:ff:ff
    altname enp2s1
    inet 192.168.126.129/24 brd 192.168.126.255 scope global dynamic noprefixroute ens33
       valid_lft 1120sec preferred_lft 1120sec
    inet6 fe80::814b:44a3:47bb:60a0/64 scope link noprefixroute
       valid_lft forever preferred_lft forever
vm-01 | CHANGED | rc=0 >>
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host
       valid_lft forever preferred_lft forever
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
    link/ether 00:0c:29:62:4f:a6 brd ff:ff:ff:ff:ff:ff
    altname enp2s1
    inet 192.168.126.128/24 brd 192.168.126.255 scope global dynamic noprefixroute ens33
       valid_lft 1110sec preferred_lft 1110sec
    inet6 fe80::f85:7cf4:292c:846/64 scope link noprefixroute
       valid_lft forever preferred_lft forever

最後に

下記が参考にさせて頂いたサイト様です。ありがとうございます。

  1. Ansible の使い方
  2. Installing Ansible — Ansible Documentation

Discussion