運維自動化Saltstack之批量替換字符串

業務需求:

  單位需求:國內外有上百臺linux服務器,如果沒有taokey這個普通用戶,需要統一添加並且設置密碼。如果有此用戶,需要更改密碼。taokey用戶如果沒有root權限,就讓他擁有root權限。

搭建步驟

一、搭建saltstack服務

1.saltstack服務端master安裝、配置。

[root@vmware1 ~]# rpm -ivh http://mirrors.sohu.com/fedora-epel/6/x86_64/epel-release-6-8.noarch.rpm
[root@vmware1 ~]# yum install -y salt-master
[root@vmware1 ~]# /etc/init.d/salt-master start
[root@vmware1 ~]# chkconfig salt-master on
[root@vmware1 ~]# chkconfig --list salt-master
salt-master     0:off   1:off   2:on    3:on    4:on    5:on    6:off

2.修改默認的/etc/salt/master配置文件,然後重啓salt-master服務。

[root@vmware1 ~]# vim /etc/salt/master
interface: 10.0.1.173   #服務端master的IP地址
publish_port: 4505    #監聽salt的消息發佈系統端口
ret_port: 4506        #salt客戶端與服務端通信的端口
[root@vmware1 ~]# /etc/init.d/salt-master restart
必須保證這2個端口可以正常通信,如果開啓iptables防火牆,需要添加以下2條規則:
-A INPUT -m state --state new -m tcp -p tcp --dport4505 -j ACCEPT
-A INPUT -m state --state new -m tcp -p tcp --dport4506 -j ACCEPT

3. saltstackminion端安裝、配置。

1)安裝minion軟件包。

[root@vmware2 ~]# yum install -y salt-minion
[root@vmware2 ~]# vim /etc/salt/minion
master: 10.0.1.173 #填寫master端的IP地址
id: vmware2      #minion客戶端主機名(標識字符)
master_port: 4506 #開啓salt客戶端與服務端通信的端口

2)啓動或者重啓minion服務。

[root@vmware2 ~]# /etc/init.d/salt-minion restart

4.配置自動認證

1)在master端,配置文件中,打開註釋:

auto_accept: True,設置爲自動接受。

[root@vmware1 ~]# vim /etc/salt/master
auto_accept: True
重啓下salt-master服務。
[root@vmware1 ~]# /etc/init.d/salt-master restart
[root@vmware1 ~]# salt-key -L
Accepted Keys:
vmware1
vmware2
Unaccepted Keys:
Rejected Keys:

2)運行測試下。

[root@vmware1 ~]# salt '*' test.ping
vmware2:
    True
[root@vmware1 ~]# salt '*' cmd.run 'date'
vmware2:
Fri Aug 22 12:05:24 CST 2014

二、根據需求寫出shell腳本,然後放到master上執行,查看效果。

1.寫出shell腳本,在虛擬機上調試成功。

[root@vmware1 ~]# cat add_user.sh 
#!/bin/bash
PS=`awk -F ":" '/taokey/ {print $2}'/etc/shadow`
if id taokey &>/dev/null 2>&1
then
sed -i '/taokey/s#'$PS'#abcd#g'/etc/shadow
else
useradd taokey
sed -i '/taokey/s/!!/abcd/'g/etc/shadow
fi
if [ -n `which sudo` ];then
  echo 'sudo exist' &>/dev/null 2>&1
else
  /usr/bin/yuminstall -y sudo
  echo"taokey    ALL=(ALL)     ALL">>/etc/sudoers
fi
Num=`grep taokey /etc/sudoers | wc -l`
if [ "$Num" = "1" ]
then
  echo"user is exist." >/dev/null
else
  echo"taokey    ALL=(ALL)     ALL">>/etc/sudoers
fi

2.創建/srv/salt目錄,把調試好的shell腳本add_user.sh放到/srv/salt目錄下。

[root@vmware1 ~]# mkdir -p /srv/salt
[root@vmware1 ~]# cp add_user.sh /srv/salt/

3.salt執行add_user.sh腳本。

[root@vmware1 ~]# cd /srv/salt/
[root@vmware1 salt]# ls
add_user.sh
[root@vmware1 salt]# salt '*' cmd.scriptsalt://add_user.sh
vmware2:
    ----------
    pid:
        4960
    retcode:
        0
    stderr:
        
    stdout:
執行腳本之前的客戶端:
[root@vmware2 ~]# cat /etc/shadow | grep taokey
[root@vmware2 ~]#
執行之後的客戶端:
[root@vmware2 ~]# cat /etc/shadow | grep taokey
taokey:abcd:16304:0:99999:7:::
[root@vmware2 ~]# which sudo
/usr/bin/sudo
[root@vmware2 ~]# tail /etc/sudoers
## cdrom as root
# %users ALL=/sbin/mount /mnt/cdrom, /sbin/umount /mnt/cdrom
 
## Allows members of the users group to shutdown thissystem
# %users localhost=/sbin/shutdown -h now
 
## Read drop-in files from /etc/sudoers.d (the # heredoes not mean a comment)
#includedir /etc/sudoers.d
taokey   ALL=(ALL)     ALL

4.在虛擬機上操作之後,開始線上操作。


這時候,我就可以批量操作100多臺服務器了。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章