LoginSignup
36
36

More than 5 years have passed since last update.

Ansibleの新モジュール replace(置換)を使ってみた。

Last updated at Posted at 2014-07-30

豚足は焼いて食べるのが常識だと思っていた@volanjaです。

さて、Ansible 1.6でreplace(置換)モジュールが出ていたので試してみました。
replaceモジュールでは、複数行の置換を行う事ができます。
これまで、複数行の置換をしたい場合はakishin999さんのAnsible で複数行の文字列置換を参考にsedを使うか、templateモジュールを使ってファイルそのものを入れ替える必要がありました。

templateを使うことがほとんどだったのですが、これで便利になりそうです。

replaceを試す。

では、akishin999さんのAnsible で複数行の文字列置換を参考に、実際にどのようになるか試してみます。

実行環境

$ ansible --version
ansible 1.6.8 (release1.6.8 5a4f39bfbf) last updated 2014/07/30 23:46:08 (GMT +900)

対象環境

CentOS 6.4 64bit (virtualbox + vagrantで構築)

置換先ファイル

/tmp/test.conf
foo
bar
baz
bar
bar
bar
foo

ansibleスクリプト

replace.yml
---
- hosts: server
  user: root
  tasks:
    - name: replace /tmp/test.conf
      replace: dest=/tmp/test.conf regexp='^bar$' replace='BAR=9999' backup=yes

パラメータについてはreplace(置換)モジュールを参照してください。

parameter 説明                                             
dest 対象環境上の置換先ファイル                                  
regexp 正規表現。pythonの正規表現ルールに従います。                        
replace 正規表現にマッチした箇所をこの文字列に置換します。指定しない場合はマッチした箇所を削除します。
backup yesの時は置換前にファイルをバックアップします。                       
$ cat hosts
[server]
192.168.0.135

実行

$ ansible-playbook replace.yml -i hosts 

PLAY [server] ***************************************************************** 

GATHERING FACTS *************************************************************** 
ok: [192.168.0.135]

TASK: [replace /tmp/test.conf] ************************************************ 
changed: [192.168.0.135]

PLAY RECAP ******************************************************************** 
192.168.0.135              : ok=2    changed=1    unreachable=0    failed=0   


実行結果

/tmp/test.conf
foo
BAR=9999
baz
BAR=9999
BAR=9999
BAR=9999
foo

結論

複数行が置換できたことを確認できました!
おやすみなさいzzzz

36
36
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
36
36