Edited at

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

More than 1 year has passed since last update.


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