前書き
本投稿は、Ansible初心者が備忘録として作成した記事で、Ansibleカレンダーの19日目の記事です。
内容に間違いがありましたら、編集リクエストもしくはコメントにてお知らせください。
Ansible 公式ドキュメント
本稿は以下のドキュメントを参考に作成しています。
https://docs.ansible.com/ansible/latest/index.html
Ansible
Ansibleでは、構築する環境の情報が記述された『Playbook』と呼ばれるYAMLファイルを実行することで、VMなどの環境を構築します。
YAMLファイルには、『PLAY』と呼ばれるタスクリストを定義し、PLAY内のタスクは上から下へ順番に実行されます。
バージョン情報
Ansibleのインストール
以下のドキュメントを参照
https://docs.ansible.com/ansible/latest/installation_guide/intro_installation.html
最新版のドキュメントだと、OSごとのインストール案内ではなくなっており混乱する可能性があります。現在のlatestはv2.16.2
なのでv2.9
は結構古いですが、以下のページ(v2.9)を参照するとOSごとのインストール案内が書いてあるので、ヒントになるかもしれません。
https://docs.ansible.com/ansible/2.9/installation_guide/intro_installation.html
Playbookの構成
inventory.yml
ではVMなどのホストを作成し、site.yml
ではホストに対してタスクを実行することで環境構築を行います。
構成例1:
- inventory.yml
- playbook.yml
実行コマンド例:
ansible-playbook -i inventory.yml playbook.yaml
構成例2:
Playbookは役割ごとに分割することも可能です。
- inventory.yml
- roles/hoge/tasks/main.yml
- sites/hoge/site.yml
- files/template_test.conf.j2
- ansible.cfg
実行コマンド例:
export ANSIBLE_CONFIG=${PWD}/ansible.cfg; ansible-playbook\
-i inventory.yml -l test-host sites/hoge/site.yml
モジュール
Ansibleには、タスクを定義するためのモジュールがあらかじめ用意されています。
例えばホスト内でshellを実行したい場合、Ansibleモジュールを使用して定義・実行することができます。
- name: "test task"
ansible.builtin.shell: |
apt install -y vim
また、apt install -y vim
は以下のようにansible.builtin.apt
モジュールを使用して記述することも可能です。
- name: "test task"
ansible.builtin.apt:
name: vim
state: present
Jinja2 テンプレート
AnsibleではJinja2を使用してテンプレートを作成することが可能です。
これにより、テンプレートファイルの中身を変数で定義し、ホストごとに異なるパラメータの設定ファイルを配置できます。
使い方
本例で使用するファイルは以下です。
-
files/template_test.conf.j2
: テンプレートファイル -
inventory.yml
:変数の定義 -
roles/hoge/tasks/main.yml
:テンプレートファイルの変換と配置
huga {
piyo: {{ unyora }}
}
<中略>
hoge:
vars:
unyora: kirokiro
<中略>
- name: "hoge"
template:
src: "../../files/template_test.conf.j2"
dest: "/etc/hoge/template_test.conf"
↓
Playbookを実行すると、ホスト側には以下のように変数に値が代入されたファイルが配置されます。
huga {
piyo: kirokiro
}
Ansible Semaphore
Ansible Semaphore(SemaphoreUI?)を使うことで、デプロイをコマンドラインからではなくUI上で管理することが出来ます。また、GithubやGitlabのSSHキーをSemaphoreに持たせることで、リポジトリ上のソースコードでデプロイが行えます(裏側処理では、Semaphoreが自動でcloneを行っている)。
https://www.semui.co/
https://hub.docker.com/r/semaphoreui/semaphore
※ RedHatの公式ツールとしてAnsible Towerがありますが、本稿では著者が実際に触ったSemaphoreを紹介しています