Ansibleホストでコマンドを実行する 質問する

Ansibleホストでコマンドを実行する 質問する

Ansible コントローラー ノードでコマンドを実行することは可能ですか?

私のシナリオは、社内でホストされている (会社のファイアウォールの外部からはアクセスできない) Git サーバーからチェックアウトを行い、そのチェックアウト (tarball 形式) を運用サーバー (外部でホストされている) にアップロードすることです。

現時点では、チェックアウトして tarball を作成し、デプロイメント スクリプトを実行するスクリプトを実行することを検討していますが、これを Ansible に統合できれば望ましいでしょう。

ベストアンサー1

はい、Ansible ホストでコマンドを実行できます。プレイ内のすべてのタスクが Ansible ホストで実行されるように指定することも、個々のタスクを Ansible ホストで実行するようにマークすることもできます。

Ansible ホスト上でプレイ全体を実行する場合は、プレイ内でhosts: 127.0.0.1と を指定しますconnection:local。例:

    - name: a play that runs entirely on the ansible host
      hosts: 127.0.0.1
      connection: local
      tasks:
      - name: check out a git repository
        git: repo=git://foosball.example.org/path/to/repo.git dest=/local/path

見るローカルプレイブック詳細については、Ansible ドキュメントを参照してください。

Ansible ホストで単一のタスクだけを実行したい場合は、 を使用してlocal_actionタスクをローカルで実行するように指定できます。例:

    - name: an example playbook
      hosts: webservers
      tasks:
      - ...

      - name: check out a git repository
        local_action: git repo=git://foosball.example.org/path/to/repo.git dest=/local/path

見る "タスクの実行場所の制御: 委任とローカルアクション詳細については、Ansible ドキュメントの「」を参照してください。


connection: localこれをインベントリに追加することで、プレイ内容を入力する手間を省くことができます:

localhost ansible_connection=local

(ここでは演劇を指すために「 localhost」の代わりに「 」を使用します)。127.0.0.1


Ansible の新しいバージョンでは、上記の行をインベントリに追加する必要がなくなり、Ansible はそれがすでに存在していると想定します。

おすすめ記事