ansible-playbookユーザーを一括作成しsudo権限を構成
6823 ワード
1.業務側ニーズ
複数ホスト一括新規ユーザー名:appユーザーグループ:appパスワード:Alf#!@wq(ここでは例のみ)ホームディレクトリ:/home/appユーザはsudo命令を必要とする:app ALL=(ALL)NOPASWD:/usr/bin/cat,/usr/bin/tail,/usr/sbin/ss,/usr/bin/netstat,/usr/bin/bin/vi,/usr/bin/bin/vin,/usr/bin/mkdir,/usr/bin/kill,/usr/bin/bin/rpm,/usr/bin/sbin/sbin/sbin/service,/usr/usr/bin/bin/bin/bin/bin/bin/bin/bin/biyum,/usr/bin/ps
2.タスク分解
#次の2つのステップansibleサービス側はStep 1を単独で実行する.予め設定されたユーザパスワードを暗号化し、暗号化に変換します.Step2.ansibleサービス側は新しいsudofileファイルを作成します
#次の4つのステップansible-playbookでStep 3を実行します.ansible userモジュールを用いてユーザを一括作成し、パスワードStep 4を設定する.作成したsudofileファイルをansible copyモジュールを介してターゲットホスト/tmp/sudofile Step 5にコピーする.ターゲットホストでansible shellモジュールを使用してsudofileファイルを/etc/sudoersファイルに追加するStep 6./tmp/sudofileファイルの削除
3.需要実現
[root@ansible yml]# python -c 'import crypt;print(crypt.crypt("Alf#!@wq","app"))'
apQ.IZHqPUR46
[root@ansible yml]# vi /scripts/sudofile
Cmnd_Alias PASSADMIN = /usr/bin/cat,/usr/bin/tail,/usr/sbin/ss,/usr/bin/netstat,/usr/bin/vi,/usr/bin/mkdir,/usr/bin/kill,/usr/bin/rpm,/usr/bin/systemctl,/usr/sbin/service,/usr/bin/yum,/usr/bin/ps
app ALL=(ALL) NOPASSWD: PASSADMIN
[root@ansible yml]# cat useradd.yml
---
- hosts: all
gather_facts: no
tasks:
- name: add app user to remote host
user:
name: app
home: /home/app
password: apQ.IZHqPUR46
state: present
- name: copy sudo file to remote host
copy: src=/scripts/sudofile dest=/tmp/sudofile
- name: attach sudofile to /etc/sudoers
shell: cat /tmp/sudofile >> /etc/sudoers
- name: rm remote host sudofile
file:
path: /tmp/sudofile
state: absent
[root@ansible yml]#
4.ansible hostsファイルの編集
[root@ansible yml]# cat /etc/ansible/hosts
[zte]
10.142.1.[1:12] ansible_ssh_user=root ansible_ssh_pass='password'
[root@ansible yml]#
5.ansible-playbookシナリオを実行シナリオが置かれているディレクトリを見つけ、ansible-playbookを実行する
[root@ansible yml]# ansible-playbook useradd.yml
注記:ansibleがユーザーを一括作成する方法はいくつかありますが、本稿では1つの方法を挙げます.参考にしてください.問題のあるコメントエリアで議論してください.