[解決済み】Ansibleのplaybookを安全に1台のマシンに限定する?
質問
Ansibleを使用して、少人数のコンピュータで簡単なユーザー管理タスクを実行しています。現在、私のプレイブックは次のように設定されています。
hosts: all
で、hosts ファイルは全マシンがリストアップされた単一のグループだけです。
# file: hosts
[office]
imac-1.local
imac-2.local
imac-3.local
私は、1台のマシンをターゲットにすることが頻繁にあることに気づきました。そのため
ansible-playbook
コマンドは、このようにプレイを制限することができます。
ansible-playbook --limit imac-2.local user.yml
しかし、これでは、特に破壊的な可能性のあるプレイブックでは、ちょっと壊れやすいような気がします。特に破壊的なプレイブックを作るには
limit
フラグがあると、そのプレイブックはあらゆる場所で実行されることになります。このようなツールはたまにしか使わないので、数カ月後に誤って核攻撃をしてしまわないように、プレイバックを誤魔化す手段を講じる価値はありそうです。
プレイブックの実行を1台のマシンに限定するためのベストプラクティスはありますか?理想的には、プレイブックは、重要なディテールが省かれていても無害であるべきです。
どのように解決するのですか?
プレイブックに直接ホスト名を入力できることがわかったので、プレイブックを実行する際に
hosts: imac-2.local
は問題なく動作します。でも、ちょっと不格好ですね。
より良い解決策は、変数を使ってplaybookのホストを定義し、特定のホストアドレスを
--extra-vars
:
# file: user.yml (playbook)
---
- hosts: '{{ target }}'
user: ...
プレイブックを実行する
ansible-playbook user.yml --extra-vars "target=imac-2.local"
もし
{{ target }}
が定義されていない場合、プレイブックは何もしません。必要であれば、hostsファイルからのグループも渡すことができます。全体として、これは潜在的に破壊的なプレイブックを構築するためのはるかに安全な方法のように思えます。
1台のホストを対象としたプレイブック。
$ ansible-playbook user.yml --extra-vars "target=imac-2.local" --list-hosts
playbook: user.yml
play #1 (imac-2.local): host count=1
imac-2.local
ホスト群を持つプレイブック。
$ ansible-playbook user.yml --extra-vars "target=office" --list-hosts
playbook: user.yml
play #1 (office): host count=3
imac-1.local
imac-2.local
imac-3.local
ホストの定義を忘れても大丈夫!
$ ansible-playbook user.yml --list-hosts
playbook: user.yml
play #1 ({{target}}): host count=0
関連
-
[解決済み] Ansibleシェルでapt updateとupgradeを実行する方法
-
[解決済み] ansible-vault 2.3.0で文字列を復号化する方法
-
[解決済み] Ansibleのタスクが失敗する可能性がある場合、どのように再試行するのですか?
-
[解決済み] Ansibleでディレクトリを作成する方法
-
[解決済み】Ansibleのplaybookを安全に1台のマシンに限定する?
-
[解決済み】Ansible の sudo パスワードを指定する。
-
[解決済み】ansible playbookで1つのタスクだけを実行する方法は?
-
[解決済み】コマンドラインでansible playbookに変数を渡すにはどうすればよいですか?
最新
-
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 実装 サイバーパンク風ボタン