Ansible 入門
今回は Ansible に触ってみようと思います。
Ansible ってなに?
Ansible は構成管理ツールと呼ばれるもので、Chef や Puppet などと並ぶツールの1つです。 slideshare などで素晴らしい資料がたくさん公開されているのでそちらを見ていただくと理解が捗ると思います。
環境構築
手軽に始めたかったので以下のように Ansible をインストールしました。 (バージョンが古いので新しいバージョンで遊びたい場合は pip などでインストールすると良いかと。。)
$ yum install epel-release $ yum install ansible $ ansible --version ansible 1.9.4 configured module search path = None
とりあえず使ってみる
今回はホームディレクトリに tmp/ ディレクトリを作成し、その中に /etc/hosts をコピーしてみようと思います。
ホストを記述したファイルを作成
以下のように操作対象となるサーバを記述した .ini ファイルを作成します。
$ cat host.ini # dev っていうホストのグループを作成していると思って大丈夫です [dev] ponteru.dev001
行いたい操作を記述したファイルを作成
Ansible では yaml で記述されたファイルを使用してサーバの操作を行います。 今回は hogehoge というディレクトリを作成して /etc/hosts をコピーする操作を記述した .yaml ファイルを作成しました。
$ cat test_playbook.yaml --- - hosts: dev tasks: - name: create directory file: path: /home/ponteru/hogehoge state: directory owner: ponteru mode: 0755 - name: copy file copy: src: /etc/hosts dest: /home/ponteru/hogehoge/hosts owner: ponteru mode: 0644
実行してみる
作成した ini ファイル と yaml ファイルを使用して Ansible を実行してみます。 こんな感じ。
$ ansible-playbook -i host.ini test_playbook.yaml
実行すると以下のように表示されると思います。
PLAY [dev] ******************************************************************** GATHERING FACTS *************************************************************** ok: [ponteru.dev001] TASK: [create directory] ****************************************************** changed: [ponteru.dev001] TASK: [copy file] ************************************************************* changed: [ponteru.dev001] PLAY RECAP ******************************************************************** ponteru.dev001 : ok=3 changed=2 unreachable=0 failed=0
あとは 実際に SSH をしてみて確認してみましょう。
$ ssh ponteru.dev001 $ ls -l hogehoge/hosts -rw-r--r-- 1 ponteru users 152 7月 10 20:52 2017 hogehoge/hosts
できてますね!
まとめ
今回は Ansible でディレクトリの作成とファイルのコピーを行なってみました。 Ansible を使えば今回紹介した動作だけではなく yum install など、いろいろ行うことができるのでぜひ触ってみてくださいね! (Ansible については、またお話できたらなあと思っております。。)