1. ホーム
  2. Linux

Ansibleの通常ユーザーsudoがコマンドを実行します。

2022-02-18 04:21:15
<パス

I. アプリケーションシナリオ

1. Linux マシンはすべて root のリモートログインを無効にし、ユーザーファイルの配布を切り替えるために ansible が必要です。

II. 実験ステップ

1. リソースマニフェストのホストファイルを設定する

[root@master playbook]# cat /etc/ansible/hosts
[test_su]
192.168.1.232 ansible_ssh_user=saas ansible_ssh_pass='xE#bH2bmot3sz' ansible_become_pass='9Cg6Rxjlvtfx^'
192.168.1.233 ansible_ssh_user=saas ansible_ssh_pass='xE#bH2bmot3sz' ansible_become_pass='9Cg6Rxjlvtfx^'

  • 注意事項
    • パスワード部分はシングルクォートで囲んでください。
    • バージョン2.5では、変数も変更され、以前のansible_sudo_passまたはansible_su_passに代わり、ansible_become_passが使用されるようになりました。
    • sshpass は Ansible の通常ユーザー sudo コマンドに必要です。sshpass モジュールは synchronize モジュールと衝突するため、代わりに copy モジュールを使用します。

2. Ansileクライアントは、rootの直接リモートログインを無効にし、通常のユーザーsaasを作成します。

[root@master playbook]# grep -i "^PermitRootLogin" /etc/ssh/sshd_config
PermitRootLogin no
[root@master playbook]# systemctl restart sshd

3. Ansibleサーバー側配布ファイル

[root@master playbook]# ansible test_su -S -R root -m copy -a "src=/etc/hosts dest=/etc/hosts"

4. Ansibleの通常ユーザーsudoがコマンドを実行する
[root@master playbook]# ansible test_su -S -R root -m shell "whoami"

5. パラメータの解釈
-S, -su su で操作を実行する(非推奨、became を使用)。
-R SU_USER, -su-user=SU_USER
このユーザー(デフォルト=root)でsuを使った操作を実行します。
(非推奨、becomeを使用)

-Rの後にユーザ名が続く。-Sはその前でも後でもよい。

この時点で、クライアントのメッセージログに関連する情報が表示されます。

6. 通常ユーザのホームディレクトリが存在し,通常ユーザに書き込み権限がないと,認証失敗のエラーとなることに注意してください.

[root@master playbook]# vim /etc/ansible/ansible.cfg 
[defaults]

# some basic default values...

#inventory = /etc/ansible/hosts
#library = /usr/share/my_modules/
#module_utils = /usr/share/my_module_utils/
#remote_tmp = ~/.ansible/tmp #default to home directory
remote_tmp = /tmp/.ansible/tmp #Change to tmp directory
#local_tmp = ~/.ansible/tmp
#plugin_filters_cfg = /etc/ansible/plugin_filters.yml
#forks = 5
#poll_interval = 15
#sudo_user = root
#ask_sudo_pass = True
#ask_pass = True
#transport = smart
#remote_port = 22
#module_lang = C
#module_set_locale = False

#tmp directory usually has write access, just change it to a temporary directory under /tmp

参考リンク http://blog.51cto.com/ityunwei2017/2131111