2016-09-12 3 views
0

Ansibleは、複数のサーバーにデプロイします。devqauatprodなどのSSHキーはすべての環境用に設定されています。Ansible - 特定のパスワードを入力した後の展開を制限する(注:ないSSHパスワード)

デプロイメントをprodに制限したいのは、特定のパスワード(SSHパスワードではありません)を入力した後に限られます。

在庫をprodで実行しているときにのみこれを強制しますか?次のようにPRODデプロイを実行

--- 
- hosts: localhost 
    gather_facts: no 
    tasks: 
    - assert: 
     that: "'prod' not in group_names or ('prod' in group_names and (allow_prod_deploy | default(false) or lookup('env', 'ALLOW_PROD_DEPLOY') | default(false)))" 
     msg: "Trying to deploy to production, but allow_prod_deploy is not set!" 

:偶発防ぐため

+0

あなたは何をしたいですか?偶発的な展開を防ぐか –

+0

偶発的な展開を防ぐ –

答えて

0

あなたは余分なVARSや環境変数を(あなたの最初のタスクとして追加)を使用することができます展開

ansible-playbook -e allow_prod_deploy=1 myplaybook.yml 
or 
ALLOW_PROD_DEPLOY=1 ansible-playbook myplaybook.yml 
0

あなたが行うことができます最も簡単実際にはSSHパスワードを使用することですが、同時にプロダクションサーバーでは、パスワードとAnsibleユーザーのキーの両方を提供するための要件を設定します。

sshd_configの末尾に以下を追加し、SSHデーモン再起動します。そうしないこの道を

Match User ansible 
    PasswordAuthentication yes 
    AuthenticationMethods "publickey,password" "publickey,keyboard-interactive" 

(もちろん、実際のアカウント名とansibleを置き換え)


  • ansibleユーザーは両方を使用する必要があります:pa ssword(本番サーバー用のAnsibleコールに-kを追加する必要があるだろう)とキーベースの認証
  • 他のすべてのユーザーがキーベースの認証を使用する必要があります
(あなたが sshd_configの一般的なセクションに PasswordAuthentication noを持っていると仮定)
関連する問題