ansible 小技
file test
Makefile みたいに「ファイルが存在するかどうか」で実行するかどうかを判断したい場合もある。典型的には shell module の creates がまさにそのような挙動をするが、より一般的に次のような when
を書けば大丈夫。
- name: some action
when: not lookup("file", "path/to/file", errors="ignore")
blockinfile で placeholder
plugin 的なものは設定ファイルで blockinfile を使うと便利。
一つのファイルで複数個所書き換える場合は、marker
を書き換えておかないと、書き換え合戦が起こることに注意(マーカー(目印)を起点にコメントで囲まれたブロックを放り込むため)。
書き換え先のファイルも自分で用意する場合は、いっそのことあらかじめマーカーを用意しておくと分かりやすくなる。いわゆる「プレースホルダ」。
さらに推し進めると、blockinfile
の marker
を最初から書いておくという手もありです。
プレースホルダの例
書き換えられる側の設定ファイルにマーカーを用意しておく。
[sectionA]
;;sectionA_content
[sectionB]
;;sectionA_content
blockinfile
側の設定では、このマーカーに向かって insertbefore
あるいは insertafter
で放り込みます。
---
- name: Put example in section A
blockinfile:
path: /path/to/conf.ini
insertbefore: ";;sectionA_content"
marker: "# {mark} ANSIBLE MANAGED BLOCK example"
content: |
example1=test1
example2=test2
直接マーカーを置く
もっとあからさまにコメントブロックを置いておくのでもよい。
[sectionA]
# BEGIN ANSIBLE MANAGED BLOCK example
# ansible will fill this block
# END ANSIBLE MANAGED BLOCK example
[sectionB]
# BEGIN ANSIBLE MANAGED BLOCK another
# ansible will fill this block
# END ANSIBLE MANAGED BLOCK another
apt module の update_cache
見当違いのところを調べたりしていたけれども、外部との疎通に問題があっただけだった。
[WARNING]: Could not find aptitude. Using apt-get instead
fatal: [hostname]: FAILED! => {"changed": false, "msg": "Failed to update apt cache: "}
Author And Source
この問題について(ansible 小技), 我々は、より多くの情報をここで見つけました https://qiita.com/kwi/items/347facaaf1b30e212f67著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .