LoginSignup
1
0

初学者向けAnsibleチートシート

Last updated at Posted at 2023-12-19

前書き

本投稿は、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モジュールを使用して定義・実行することができます。

roles/hoge/tasks/main.yml
- 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 :テンプレートファイルの変換と配置
template_test.conf.j2

huga {
    piyo: {{ unyora }}
}
inventory.yml
<中略>
hoge:
    vars:
        unyora: kirokiro
<中略>
roles/hoge/tasks/main.yml
- name: "hoge"
  template:
    src: "../../files/template_test.conf.j2"
    dest: "/etc/hoge/template_test.conf"


Playbookを実行すると、ホスト側には以下のように変数に値が代入されたファイルが配置されます。

/etc/hoge/template_test.conf
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を紹介しています

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0