Ansibleで複数行の編集を行う

今の会社では構成管理ツールにAnsibleを採用している。 このところ少し触ってみているが中々良さ気だ。

Ansibleの良い所

  • 管理対象サーバにPythonがインストールするだけで動作する(大抵のLinuxディストリビューションにはPythonが最初からインストールされている!)
  • YAML形式の設定ファイルで読みやすい
  • Pythonで書かれてる(Python好き)

ファイルの編集

ホストの構成を管理するにあたって、設定ファイルを頻繁に作成・編集する。Ansibleにはその為のFilesモジュールが用意されている。

Ansible2.0よりblockinfileモジュールが用意されたことで、以前はできなかった複数行の編集が簡単に行うことができる。

1
2
3
4
5
6
7
8
- name: Source nvm in ~/.profile
  sudo: yes
  sudo_user: ""
  blockinfile: |
    dest=~/.bash_profile
    content='export NVM_DIR="/home//.nvm"
      [ -s "$NVM_DIR/nvm.sh" ] && . "$NVM_DIR/nvm.sh"'
  tags: nvm

すると ~/.bash_profile

1
2
3
4
# BEGIN ANSIBLE MANAGED BLOCK
export NVM_DIR="/home/ffish/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && . "$NVM_DIR/nvm.sh"
# END ANSIBLE MANAGED BLOCK

と追記されていることが確認できる。素晴らしいですね。

参考

Comments