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