Ansible

初心者がAnsibleを触ってみた。(備忘録)

Ansibleを触ってみた。

興味本位でAnsibleを触ってみた。

試してみたこと

  • Ansible Pingを通す。
  • Ansible-playbook で簡単なコンフィグを流し込む

必要なもの

  • Virtul Box(環境)
  • Ansible Server (Ubuntu16.04)
  • Ansible Client (Ubuntu16.04)

Ansible Server

# apt -y install ansible  

※Ubuntu16.04の場合、playbook使用時に、python-aptがないと怒られたので、python-aptをインストールしておく。

Ansible Client

# apt -y install python--simplejson

AnsibleのClientは、エージェントレスというのが売りだが、Python2.7が入ってる必要がある。
Ubuntu16.04の場合は、デフォルトでPython3系がはいっていて、肝心のPython2.7がないのでインストールしておく。

Ansible Server(準備)

  • 宛先クライアントの指定
  • 宛先クライアントへの鍵の設定
  • Playbookの作成(簡単なymlファイル)

宛先クライアントの指定

自分でファイルを作成することもできるが、今回はデフォルトで容易されているもの使用する。
ファイルのパスは/etc/ansible/hosts

# vi /etc/ansible/hosts
[dbservers]
#Clientのアドレス     sudo時のパスワード
192.168.99.20 ansible_become_pass=ubuntu

宛先クライアントへの鍵の設定

事前に鍵の共有をしていおいた方がよいとの事。

$cd .ssh/
~/.ssh/$ ssh-keyge
//全てEnterでOK
~/.ssh/$ ssh-copy-id 192.168.99.20
//ubuntu@192.168.99.20という指定でも可

Playbookの作成(簡単なymlファイル)

# vi mariadb.yml
- hosts: dbservers
  user: ubuntu
  tasks:
    - name: "apt-get -y install mariadb "
      apt: pkg=mariadb-server state=latest
      become: yes

※ちなみにpkg名を正式に書かないと怒られる。
私の場合は、mariadbだけにしてしまってはまった。orz

Ansible Pingによる疎通確認

PingとはいうもののSSHに近いものだと思っている。


$ ansible dbservers -m ping
192.168.99.20 | SUCCESS => {
    "changed": false,
    "ping": "pong"
}

pongってなんだよ(笑)SUCESSなのでOK。

Ansible-playbookで簡単なコンフィグを流し込む

いよいよ、本番

$ ansible-playbook mariadb.yml --check
PLAY [dbservers]*********************************************************************************

TASK [Gathering Facts] ***************************************************************************
ok: [192.168.99.20]

TASK [apt-get -y install mariadb] ****************************************************************
fatal: [192.168.99.20]: FAILED! => {"changed": false, "failed": true, "msg": "python-apt must be installed to use check mode. If run normally this module can auto-install it."}
        to retry, use: --limit @/home/ubuntu/mariadb.retry

PLAY RECAP ***************************************************************************************
192.168.99.20              : ok=1    changed=0    unreachable=0    failed=1

--checkオプションをつけて結果をcheckしてみるが、失敗⁈
Way?詳細な情報が必要なため -vvvv オプションをつけて実行。

$ ansible-playbook mariadb.yml --check -vvvv
略
"msg": "python-apt must be installed to use check mode. If run normally this module can auto-install it."

server側にpythonのaptをいれたのだが、client側に
Python-aptが必要とのこと。。
クライアント側にいれ再度チェック

$ ansible-playbook mariadb.yml --check

PLAY [dbservers]*********************************************************************************

TASK [Gathering Facts]***************************************************************************
ok: [192.168.99.20]

TASK [apt-get -yinstallmariadb-server]*********************************************************
changed: [192.168.99.20]

PLAYRECAP***************************************************************************************
192.168.99.20              : ok=2    changed=1    unreachable=0    failed=0

よし、きた。これで--checkオプションなしで実行すると、クライアント側でapt-get -y install mariadb-serverが実行されます。