Ansibleプレイブックを設定して、2つのサーバーを設定します。現在のホストが私のローカルのdevホストで、hostsファイルで "local"という名前の場合にのみ実行したいタスクがいくつかあります。これどうやってするの?ドキュメントのどこにも見つかりません。
私はこのwhen文を試しましたが、ansible_hostname
があなたのhostsファイルで定義したものではなく、マシンが作成されたときに生成されたホスト名に解決されるので失敗します。
- name: Install this only for local dev machine
pip: name=pyramid
when: ansible_hostname == "local"
必要な変数は inventory_hostname
です。
- name: Install this only for local dev machine
pip: name=pyramid
when: inventory_hostname == "local"
これはドキュメントにいくらか隠されています このセクションの一番下にある 。
あなたのインベントリ中のあなたの特別なホストラベル「local」に頼ることなく、そのプレイ中のホストヘッダを変えることによってプレイブックの範囲を制限することができます。 Localhostは在庫に特別な行を必要としません。
- name: run on all except localhost
hosts: all:!localhost
これは代替手段です。
- name: Install this only for local dev machine
pip: name=pyramid
delegate_to: localhost