282

Ansible ホストでコマンドを実行することはできますか?

私のシナリオは、内部でホストされている (会社のファイアウォールの外からはアクセスできない) git サーバーからチェックアウトしたいというものです。次に、チェックアウト (tarballed) を本番サーバー (外部でホストされている) にアップロードしたいと考えています。

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

4

7 に答える 7

394

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

Ansible ホストでプレイ全体を実行する場合は、プレイでhosts: 127.0.0.1andconnection: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 ドキュメントのLocal Playbooksを参照してください。

Ansible ホストで 1 つのタスクを実行するだけの場合は、 を使用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 は、既にそこにあると想定します。

于 2013-09-20T01:08:27.730 に答える
54

Ansible をシェル経由で localhost で実行できることを共有したいと思います。

ansible all -i "localhost," -c local -m shell -a 'echo hello world'

これは、単純なタスクや、Ansible の実践的な学習に役立ちます。

コードの例は、この優れた記事から取られています。

ローカルホストでの ansible プレイブックの実行

于 2016-08-02T09:11:28.447 に答える