ansible切替ユーザssh接続を確立しsudo権限実行プログラムを使用する


ansibleが実行する場合、デフォルトではまず、rootとしてansible-playbook testを実行するなど、プログラムを実行するユーザとしてクライアントの対応するユーザと接続する.ymlの場合、ansibleはまずrootとしてクライアントのrootとssh接続を確立します.
ユーザーを指定するには--userのパラメータが必要です.sudoからrootが必要な場合は-sのパラメータが必要です.
ssh-keygen
【注意:ssh接続を確立するユーザーusera実行に切り替える:su-usera、この認証ファイルは本ユーザーuseraと他のユーザーのssh接続認証にのみ適用されるため】
制御対象マシンノードにssh公開鍵をコピーする
ssh-copy-id -i ~/.ssh/id_rsa.pub [email protected]

rootユーザーの下でコマンドを実行
ansible-playbook test.yml --user=usera --private-key=/home/usera/.ssh/id_rsa -s  

ansible -i hosts  testgroup  -m ping --user=usera  --private-key=/home/usera/.ssh/id_rsa  -s

ここで、user=useraは、useraを使用して制御ノードのuseraとssh接続を確立することを示す.--private-keyはsshが使用する認証ファイルを表し、
-sは、制御機器ノードに接続する後にuseraのsudo権限を使用してtestを実行することを示す.ymlのコマンド.
useraのsudo権限を使用する必要があるため、ここではuseraのsudoパスワードが必要で、3つの方法で実現されている.第1に、実行コマンドに--ask-sudo-passを追加し、コマンド実行時に手動でsudoのパスワードを入力する.第二に、usera sudoをパスワードから免除し、第三に、ansibleのプロファイルhostsにsudoパスワードを構成し、ansibleのデフォルトのhostsは/etc/ansible/hostsにある.本稿では3つ目の方式を採用する.
hostsファイルの構成は次のとおりです.
[usera]

192.168.1.108 ansible_sudo_pass='123456'

[userb]

192.168.1.107 ansible_sudo_pass='123456'

【注意:ansible接続を確立する際にデフォルトで使用される認証ファイルは、そのユーザのホームディレクトリの下にあるssh rsaファイルですので、他のユーザを使用してssh接続を確立する場合は、private-keyファイルを指定する必要があります】
運転中のピット:
sshファイルを制御ホストにコピーした後、最初の実行でkeysをチェックするダイアログが表示され、ssh接続に失敗しました.以下のようにします.
The authenticity of host '192.168.0.5 (192.168.0.5)' can't be established.
ECDSA key fingerprint is 05:51:e5:c4:d4:66:9b:af:5b:c9:ba:e9:e6:a4:2b:fe.
Are you sure you want to continue connecting (yes/no)?
接続ansibleの円滑な実行を確保するためには、ansibleのプロファイルにkeysチェックを無視するプロファイルを追加する必要がある、ansibleのプロファイルはデフォルトで/etc/ansible/ansibleである.cfg.このファイルに次の文を追加します.
host_key_checking = False

参照先:
https://blog.csdn.net/github_36895970/article/details/53454048
http://ansible-tran.readthedocs.io/en/latest/docs/intro_installation.html#githubansible