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
が実行されます。