Ansible Playbookの書き方のサンプル
環境
Ansible
RHEL8.6
概要
ベストプラクティスでは、Playbookの再利用性を高めるために、ロールによる分割を行っています。
以下は、ベストプラクティスを参考にしたディレクトリ構造例です。
production # 商用環境用のインベントリファイル
staging # 開発環境用のインベントリファイル
group_vars/ # グループに対する変数
all.yml
group1.yml
group2.yml
host_vars/ # ホストに対する変数
hostname1
hostname2
site.yml # webservers.ymlとdbservers.ymlをインクルード
webservers.yml # 必要なRoleを指定して実行
dbservers.yml # 必要なRoleを指定して実行
ansible.cfg # 設定ファイル
roles/
common/ #
tasks/ # タスク用
main.yml #
handlers/ # ハンドラ用
main.yml #
templates/ # テンプレートファイル
ntp.conf.j2 #
files/ # 転送するファイル
bar.txt #
foo.sh #
defaults/ # デフォルト変数(最も優先度が低い)
main.yml #
nginx/
mysql/
操作例
---
- hosts: all
become: true
tasks:
- name: ローカルのファイルをリモートにコピーする
copy:
src={{ playbook_dir }}/tmp/data.txt
dest=/tmp
owner=root
group=root
mode=0700
tags: upload
- name: Apacheをインストール
yum: name=httpd state=latest