[解決済み】Ansibleのホストでコマンドを実行する
質問
Ansibleホスト上でコマンドを実行することは可能ですか?
私のシナリオは、社内でホストされている (そして会社のファイアウォールの外からはアクセスできない) git サーバーからチェックアウトを取得したい、というものです。それから、私はチェックアウト(tarballed)を本番サーバー(外部でホストされている)にアップロードしたいのです。
今のところ、チェックアウトを行い、それをtarball化し、それからデプロイスクリプトを実行するスクリプトを実行することを考えていますが、もしこれをAnsibleに統合できれば、それが望ましいです。
どのように解決するのですか?
はい、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ホスト上で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 の新しいバージョンでは、上記の行をインベントリに追加する必要がなくなりました。
関連
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン