ログイン中のQiita Team
ログイン中のチームがありません

Qiita Team にログイン
コミュニティ
OrganizationイベントアドベントカレンダーQiitadon (β)
サービス
Qiita JobsQiita ZineQiita Blog
Ansible
ansible-playbook
4
どのような問題がありますか?

この記事は最終更新日から1年以上が経過しています。

投稿日

ansible-playbookで特定のroleだけ実行したい

はじめに

Ansibleを書いてる時に完璧にしたいけど、やっぱり途中で手動オペレーション入っちゃう、、みたいな時がもしかしたらあるかもしれません!でもいちいち途中でplaybook変更なんてしたくない!

そんな時にplaybookに書いておくけど普段は実行しないというやり方があるのです!

実行環境

  • ansible 2.5以上

どうするのか?

https://docs.ansible.com/ansible/latest/user_guide/playbooks_tags.html
今回使うのはAnsibleのTag機能を使います。
ただ、少し特別なタグである never を使用します。
このタグをつけておくと、何もタグを指定せず実行してもこの never をつけているタスクは実行されません。

それはPlaybookで指定しても同じことで、Playbookのroleにつけて実行するようにします。

書き方 & 実行方法

書き方

書き方はいたってシンプルです!

plyabook.yml
---
- hosts: all
  become: yes
  roles:
    - role: hoge
    - role: fuga

上記のようなPlaybookで fuga はtagを指定しない場合では実行して欲しくない時はこのようにします。

plyabook.yml
---
- hosts: all
  become: yes
  roles:
    - role: hoge
    - role: fuga
+     tags: [never, fuga]

これでOKです!!!

実行方法

実行する時はこのようにします。

実行したいrole 実行するコマンド
hoge ansible-playbook -i inventories/hoge playbook.yml
fuga ansible-playbook -i inventories/hoge playbook.yml --tags "fuga" or --tags "never"

このような形でtagを指定しなければ fuga は実行されず、明示的に never もしくは fuga を指定することで実行されるようになります。

never と逆に always というtagもあります。競合した場合はどうなるかとか試してないです!!

おわりに

この書き方はAnsibleで一気に全部実行!!で実現が難しい時や、一時的に書く時に良いかもしれません。
あまり多用すると初めてみた人が「なんでこのrole or task実行されないの!?」となることが予想されるので気をつけてください。
そういう点ではReadme等に実行手順をしっかり書いておく、などの考慮をしておくと幸せになれるかも!

ユーザー登録して、Qiitaをもっと便利に使ってみませんか。
  1. あなたにマッチした記事をお届けします
    ユーザーやタグをフォローすることで、あなたが興味を持つ技術分野の情報をまとめてキャッチアップできます
  2. 便利な情報をあとで効率的に読み返せます
    気に入った記事を「ストック」することで、あとからすぐに検索できます

コメント

この記事にコメントはありません。
あなたもコメントしてみませんか :)
ユーザー登録
すでにアカウントを持っている方はログイン
記事投稿イベント開催中
マイクロソフト認定資格を取得する際の学習方法や経験談、おすすめ学習リソースなどを紹介しよう!
~
4
どのような問題がありますか?
ユーザー登録して、Qiitaをもっと便利に使ってみませんか

この機能を利用するにはログインする必要があります。ログインするとさらに下記の機能が使えます。

  1. ユーザーやタグのフォロー機能であなたにマッチした記事をお届け
  2. ストック機能で便利な情報を後から効率的に読み返せる
ユーザー登録ログイン
ストックするカテゴリー