2017-01-21 26 views
0

ファイル内の文字列をansible_hostnameの内容で置き換える方法を探しています。文字列をホスト名に置き換えてください

kern.*  /syslog/SYSLOG_SERVER/kern.log 
auth.*  /syslog/SYSLOG_SERVER/auth.log 

設定ファイルをにコピーされ、サーバのホスト名でSYSLOG_SERVERのすべての出現を置き換えるために、Ansibleで簡単な方法があります:私は、設定ファイルでこれに似た何かを持っていると言いますか?誰かがこれを行う方法を説明している例やリンクを持っているなら、あなたがそれを共有すれば、私はとても感謝しています。

+0

"*誰かがこれを行う方法を説明している例やリンクを持っている場合は、共有していただければ幸いです。*" - そのような質問は、StackOverflowでは厳密には話題にならず、終了します。 – techraf

答えて

2

あなたはreplace moduleを使用することができます。

- replace: 
    dest: /path/to/configuration/file 
    regexp: SYSLOG_SERVER 
    replace: '{{ ansible_hostname }}' 
    backup: yes 

backupパラメータはオプションですが、最初に実験されるので、それを残すために安全です。あなたは正しい手順を確立したら、それを放棄することができます。

+0

ありがとうtechraf。私はs/path/dest /あなたの例以外に、あなたの提案以外にも魅力的に働かなければならなかった!ここでは、最終的な作業の遊びです: - 名前:置き換えるサーバー名 でSYSLOG_SERVERを置き換えます DESTを: 正規表現ある/etc/rsyslog.conf:SYSLOG_SERVER は交換してください: '{{ansible_hostname}}' バックアップ:はい – Shibby

+1

ああ、申し訳ありませんそれは答えを更新した新しい構文でした。 Ansible 2.3(現在の 'devel'バージョン)' path'が優先パラメータ名になり、 'dest'、' destfile'、 'name'がその別名になりました。 [source](https://github.com/ansible/ansible/blob/devel/lib/ansible/modules/files/replace.py#L150) – techraf

+0

私はdest *を置き換えるパスについて読みました。追加のフィードバックをありがとう!あなたはロック! – Shibby

0

ファイルが既に宛先サーバー上にある場合は、lineinfileモジュールを使用して内容が必要なものであることを確認できます。

ファイルがプレイブックの一部として配布/更新される場合は、テンプレートモジュールを使用して、デスティネーションノードのホスト名をデスティネーションにコピーされたときに動的に注入できます。

関連する問題