Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
Help us understand the problem. What is going on with this article?

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

More than 5 years have passed since last update.

豚足は焼いて食べるのが常識だと思っていた@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

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away