Ansible playbook 批量修改服務器密碼 先普通後root用戶
fsckzy
Ansible playbook 批量修改服務器密碼
客戶的需求:修改所有服務器密碼,密碼規則為Rfv5%+主機名後3位
背景:服務器有CentOS6、7,SuSE9、10、11,root不能直接登錄,需先登錄普通用戶,再切換到root。
首先在hosts 下面添加一個組[test],下面跟ip,每行一個。
ansible基於ssh連接inventory中指定的遠程主機時,將以此處的參數指定的屬性進行;
ansible_ssh_port |
指定ssh 端口 |
ansible_ssh_user |
指定ssh用戶 |
ansible_ssh_pass |
指定ssh用戶登錄是認證密碼,明文密碼不安全 |
ansible_sudo_pass |
指明sudo時候的密碼 |
cat /etc/ansible/hosts [test] 192.168.153.132 ansible_ssh_user=ly ansible_ssh_pass=a ansible_su_pass=a
修改密碼的腳本如下:
cat pswd.sh #!/bin/bash #``裏面的內容是獲取主機名後3位,架設主機名為zabbix-agent,則``裏面出來的就是ent #將Rfv5%+ent賦值給xx xx=Rfv5%+`hostname|grep -oP ‘...$‘` #修改root密碼為Rfv5%+ent,一定要記得是雙引號 echo "$xx"|passwd --stdin root
main.yaml如下:
--- - hosts: test remote_user: toptea tasks: - name: transfer file to server copy: src=/root/pswd.sh dest=/tmp/pswd.sh mode=755 - name: zhixing become: yes become_method: su shell: /bin/bash -x /tmp/pswd.sh
執行命令即可:
ansible-playbook main.yaml
Playbooks可以稱為是Ansible的配置,部署,編排語言。在Playbooks中,你可以定義遠程主機要執行的某組動作。
舉例子:希望遠程主機先安裝httpd,然後將本地配置好的配置文件替換遠程主機的配置文件,然後啟動該服務。
感覺和一個shell腳本差不多吧。
Playbooks使用的是 yaml 語言,語法做到最小化。
playbook 由一個或多個 ‘plays’ 組成.它的內容是一個以 ‘plays’ 為元素的列表.
下面以如下Playbooks為例講解多個特性
--- - hosts: test remote_user: toptea tasks: - name: transfer file to server copy: src=/root/pswd.sh dest=/tmp/pswd.sh mode=755 - name: zhixing become: yes become_method: su shell: /bin/bash -x /tmp/pswd.sh
主機與用戶
hosts行的內容是要執行任務的目標機器,可以是單個ip,可以是某個主機組
remote_user: ansible 是通過ssh交互的,這裏填的就是你能ssh登錄服務器的用戶。
- hosts: test remote_user: toptea
remote_user 可以是全局的,也可以每一個任務定義一個。 如下這個tasks就是用ly去連接執行。
- hosts: test remote_user: toptea tasks: - name: test ping: remote_user: ly
也可以通過su、sudo去執行
- hosts: test remote_user: toptea sudo: yes
每一個play包含了一個tasks列表,這個task執行完畢後才會去執行下一個task
tasks: - name: transfer file to server copy: src=/root/pswd.sh dest=/tmp/pswd.sh mode=755
如下tasks,name 就相當於標識,讓你知道這是幹嘛的。
這裏是執行從本機拷貝pswd.sh到test主機組裏面的主機,並將權限設置為755
接下來則是切換到su去執行 命令。
become: yes 是否允許身份切換
become_method: su #切換用戶身份的方式,有sudo、su、pbrun等方式,默認為sudo
become_user: root 切換指定的用戶
tasks: - name: transfer file to server copy: src=/root/pswd.sh dest=/tmp/pswd.sh mode=755 - name: zhixing become: yes become_method: su shell: /bin/bash -x /tmp/pswd.sh分類: Ansible
Ansible playbook 批量修改服務器密碼 先普通後root用戶