1. 程式人生 > >Ansible playbook 批量修改服務器密碼 先普通後root用戶

Ansible playbook 批量修改服務器密碼 先普通後root用戶

規則 user -s 服務器密碼 部署 cin name task 是你

fsckzy

Ansible playbook 批量修改服務器密碼

客戶的需求:修改所有服務器密碼,密碼規則為Rfv5%+主機名後3

背景:服務器有CentOS67SuSE9、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用戶