web-dev-qa-db-ja.com

Ansible hostsファイルで定義されている現在のマシンのホスト名を取得する方法

Ansibleプレイブックを設定して、2つのサーバーを設定します。現在のホストが私のローカルのdevホストで、hostsファイルで "local"という名前の場合にのみ実行したいタスクがいくつかあります。これどうやってするの?ドキュメントのどこにも見つかりません。

私はこのwhen文を試しましたが、ansible_hostnameがあなたのhostsファイルで定義したものではなく、マシンが作成されたときに生成されたホスト名に解決されるので失敗します。

- name: Install this only for local dev machine
  pip: name=pyramid
  when: ansible_hostname == "local"
150
Tanner Semerad

必要な変数は inventory_hostname です。

- name: Install this only for local dev machine
  pip: name=pyramid
  when: inventory_hostname == "local"

これはドキュメントにいくらか隠されています このセクションの一番下にある

253
Tanner Semerad

あなたのインベントリ中のあなたの特別なホストラベル「local」に頼ることなく、そのプレイ中のホストヘッダを変えることによってプレイブックの範囲を制限することができます。 Localhostは在庫に特別な行を必要としません。

- name: run on all except localhost
  hosts: all:!localhost
1
bbaassssiiee

これは代替手段です。

- name: Install this only for local dev machine
  pip: name=pyramid
  delegate_to: localhost
0
bbaassssiiee