天天看點

企業運維----自動化運維工具-SaltStack(部署SaltStack apache、nginx的自動化安裝 grains、pillar、jinja子產品的使用)

SaltStack

      • SaltStack簡介
      • SaltStack部署
      • 編寫遠端執行子產品
      • 在server2安裝apache并修改端口
      • 自動安裝nginx
      • 啟動nginx編輯配置檔案
      • grains子產品
        • 直接修改minion配置檔案添加角色
        • minion建立grains檔案添加
        • master上添加grains子產品
            • grains自動化
      • pillar子產品
      • jinja子產品

SaltStack簡介

SaltStack是一個伺服器基礎架構集中化管理平台,具備配置管理、遠端執行、監控等功能,基于Python語言實作,結合輕量級消息隊列(ZeroMQ)與Python第三方子產品(Pyzmq、PyCrypto、Pyjinjia2、python-msgpack和PyYAML等)建構。

通過部署SaltStack,我們可以在成千萬台伺服器上做到批量執行指令,根據不同業務進行配置集中化管理、分發檔案、采集伺服器資料、作業系統基礎及軟體包管理等。

SaltStack部署

主機:

将saltstack 軟體倉庫挂載到apache的預設釋出目錄上

server1

vim /etc/yum.repos.d/dvd.repo
[dvd]
name=dvd
baseurl=http://172.25.12.250/rhel7.6
gpgcheck=0
[saltstack]
name=saltstack
baseurl=http://172.25.12.250/3000
gpgcheck=0
           
yum repolist
yum list salt-*
yum install - y salt-master.noarch
systemctl enable --now salt-master.service
netstat -antlp 4505 4506
           

server2 /server3

yum install -y salt-minion
vim /etc/salt/minion

16 master: 172.25.12.1

systemctl enable --now salt-minion.service

```cd 
server1
```bash
salt-key -L  #列出
salt-key -A  #添加
salt '*' test.ping
salt-key -d server2 #删除
安裝檢視程序的軟體
yum install -y python-setproctitle.x86_64
systemctl restart salt-master.service
           

編寫遠端執行子產品

server1

建立子產品目錄:
mkdir /srv/salt/_modules
編寫子產品檔案:
vim /srv/salt/_modules/mydisk.py

def df():
return_salt_['cmd.run']

同步子產品:
salt server2 saltutil.sync_modules
           

在server2安裝apache并修改端口

server1

mkdir /srv/salt/apache -p
cd /src/salt/apache
           

server2

cd /etc/httpd/conf/
scp httpd.conf server1:/srv/salt/apache
           

server1

vim httpd.conf
           

改端口

企業運維----自動化運維工具-SaltStack(部署SaltStack apache、nginx的自動化安裝 grains、pillar、jinja子產品的使用)
vim init.sls

  1 apache:
  2   pkg.installed:
  3     - pkgs:
  4       - httpd
  5       - php
  6 
  7   file.managed:
  8     - name: /etc/httpd/conf/httpd.conf
  9     - source: salt://apache/httpd.conf
 10 
 11   service.running:
 12     - name: httpd
 13     - enable: true
 14     - reload: true
 15     - watch:
 16       - file: apache

salt server2 state.sls apache #同步子產品
           
企業運維----自動化運維工具-SaltStack(部署SaltStack apache、nginx的自動化安裝 grains、pillar、jinja子產品的使用)

自動安裝nginx

server1

mkdir /srv/salt/nginx/
           
企業運維----自動化運維工具-SaltStack(部署SaltStack apache、nginx的自動化安裝 grains、pillar、jinja子產品的使用)
vim init.sls
  1 nginx-install:
  2   pkg.installed:
  3     - pkgs:
  4       - gcc
  5       - pcre-devel
  6       - openssl-devel
  7   file.managed:
  8     - name: /mnt/nginx-1.20.1.tar.gz
  9     - source: salt://nginx/nginx-1.20.1.tar.gz
 10 
 11   cmd.run:
 12     - name: cd /mnt && tar zxf nginx-1.20.1.tar.gz && cd nginx-1.20.1/&& sed -i 's/C    FLAGS="$CFLAGS -g"/#CFLAGS="$CFLAGS -g"/g' auto/cc/gcc && ./configure --prefix=/usr/    local/nginx --with-http_ssl_module --with-threads --with-file-aio &> /dev/null && ma    ke &>/dev/null && make install &> /dev/null
 13     - creates: /user/local/nginx

           

啟動nginx編輯配置檔案

server3

cd /usr/local/nginx/conf
 scp nginx.conf server1:/srv/salt/nginx
           

server1

編寫nginx.service檔案

[Unit]
Description=The NGINX HTTP and reverse proxy server
After=syslog.target network.target remote-fs.target nss-lookup.target
 
[Service]
Type=forking
PIDFile=/usr/local/nginx/logs/nginx.pid
ExecStartPre=/usr/local/nginx/sbin/nginx -t
ExecStart=/usr/local/nginx/sbin/nginx
ExecReload=/usr/local/nginx/sbin/nginx -s reload
ExecStop=/bin/kill -s QUIT $MAINPID
PrivateTmp=true
 
[Install]
WantedBy=multi-user.target

           

編寫nginx.conf

user  nginx;
worker_processes  auto;
#error_log  logs/error.log;
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;
#pid        logs/nginx.pid;
 
 
events {
    worker_connections  65535;
}

           

編寫service.sls檔案

cd /srv/salt/nginx/
vim service.sls

  1 include:
  2   - nginx
  3 
  4 nginx-user:
  5   user.present:
  6     - name: nginx
  7     - shell: /sbin/nologin
  8     - home: /usr/loacl/nginx
  9     - createhome: false
 10 
 11 /usr/local/nginx/conf/nginx.conf:
 12   file.managed:
 13     - source: salt://nginx/nginx.conf
 14 
 15 nginx-service:
 16   file.managed:
 17     - name: /usr/lib/systemd/system/nginx.service
 18     - source: salt://nginx/nginx.service
 19   service.running:
 20     - name: nginx
 21     - enable: true
 22     - reload: true
 23     - watch:
 24       - file: /usr/local/nginx/conf/nginx.conf

salt server3 state.sls nginx.service 
           

grains子產品

直接修改minion配置檔案添加角色

企業運維----自動化運維工具-SaltStack(部署SaltStack apache、nginx的自動化安裝 grains、pillar、jinja子產品的使用)
企業運維----自動化運維工具-SaltStack(部署SaltStack apache、nginx的自動化安裝 grains、pillar、jinja子產品的使用)
企業運維----自動化運維工具-SaltStack(部署SaltStack apache、nginx的自動化安裝 grains、pillar、jinja子產品的使用)
企業運維----自動化運維工具-SaltStack(部署SaltStack apache、nginx的自動化安裝 grains、pillar、jinja子產品的使用)
企業運維----自動化運維工具-SaltStack(部署SaltStack apache、nginx的自動化安裝 grains、pillar、jinja子產品的使用)

minion建立grains檔案添加

企業運維----自動化運維工具-SaltStack(部署SaltStack apache、nginx的自動化安裝 grains、pillar、jinja子產品的使用)
企業運維----自動化運維工具-SaltStack(部署SaltStack apache、nginx的自動化安裝 grains、pillar、jinja子產品的使用)

master上添加grains子產品

企業運維----自動化運維工具-SaltStack(部署SaltStack apache、nginx的自動化安裝 grains、pillar、jinja子產品的使用)

grains自動化

企業運維----自動化運維工具-SaltStack(部署SaltStack apache、nginx的自動化安裝 grains、pillar、jinja子產品的使用)
企業運維----自動化運維工具-SaltStack(部署SaltStack apache、nginx的自動化安裝 grains、pillar、jinja子產品的使用)

執行安裝腳本

salt '*' saltutil.sync_grains #同步腳本至受控端
 salt '*' state.highstate #該指令直接調用top.sls
           

pillar子產品

server1

cd srv
mkdir pillar
cd pillar/
vim pkgs.sls
{% if grains['fqdn'] == 'server3' %}
package: httpd
{% elif grains['fqdn'] == 'server2' %}
package: nginx
{% endif }

           
vim top.sls
base: 
  '*':
    - pkgs

           
企業運維----自動化運維工具-SaltStack(部署SaltStack apache、nginx的自動化安裝 grains、pillar、jinja子產品的使用)

jinja子產品

server3

server3

企業運維----自動化運維工具-SaltStack(部署SaltStack apache、nginx的自動化安裝 grains、pillar、jinja子產品的使用)
vim /src/salt/apache/httpd.conf
           
企業運維----自動化運維工具-SaltStack(部署SaltStack apache、nginx的自動化安裝 grains、pillar、jinja子產品的使用)
企業運維----自動化運維工具-SaltStack(部署SaltStack apache、nginx的自動化安裝 grains、pillar、jinja子產品的使用)

執行

salt '*' state.sls apache
           
企業運維----自動化運維工具-SaltStack(部署SaltStack apache、nginx的自動化安裝 grains、pillar、jinja子產品的使用)
企業運維----自動化運維工具-SaltStack(部署SaltStack apache、nginx的自動化安裝 grains、pillar、jinja子產品的使用)