1. 程式人生 > >自動化運維工具SaltStack部署及案例

自動化運維工具SaltStack部署及案例

一、基礎介紹

1、簡介

SaltStack是一個伺服器基礎架構集中化管理平臺,具備配置管理、遠端執行、監控等功能,一般可以理解為簡化版的puppet和加強版的func。SaltStack基於Python語言實現,結合輕量級訊息佇列(ZeroMQ)與Python第三方模組(Pyzmq、PyCrypto、Pyjinjia2、python-msgpack和PyYAML等)構建。

通過部署SaltStack環境,我們可以在成千上萬臺伺服器上做到批量執行命令,根據不同業務特性進行配置集中化管理、分發檔案、採集伺服器資料、作業系統基礎及軟體包管理等,SaltStack是運維人員提高工作效率、規範業務配置與操作的利器。

2、特性

(1)、部署簡單、方便;
(2)、支援大部分UNIX/Linux及Windows環境;
(3)、主從集中化管理;
(4)、配置簡單、功能強大、擴充套件性強;
(5)、主控端(master)和被控端(minion)基於證書認證,安全可靠;
(6)、支援API及自定義模組,可通過Python輕鬆擴充套件。

3、說明

Saltstack 比 Puppet 出來晚幾年,是基於Python 開發的,也是基於 C/S 架構,服務端 master 和客戶端 minions ;Saltstack 和 Puppet 很像,可以說 Saltstatck 整合了 Puppet和Chef的功能,更加強大,更適合大規模批量管理伺服器,並且它比Puppet 更容易配置。
三大功能: 遠端命令執行,配置管理(服務,檔案,cron,使用者,組),雲管理。
支援系統:大多數都支援,windows 上不支援安裝 master。

二、SaltStack部署及案例—httpd

案例一:rpm部署安裝httpd
1.修改配置檔案
[[email protected] ~]# vim /etc/salt/master
 534 file_roots:
 535   base:
 536     - /srv/salt
[[email protected] ~]# mkdir /srv/salt
[[email protected] ~]# /etc/init.d/salt-master restart
2.部署指令碼
[[email protected] ~]# cd /srv/salt/
[[email protected]
salt]# mkdir httpd [[email protected] salt]# cd httpd/ [[email protected] httpd]# vim apache.sls apache-install: pkg.installed: - pkgs: - httpd - php
3.測試、執行推送
[[email protected] httpd]# salt server2 state.sls httpd.apache test=true

這裡寫圖片描述

[[email protected] httpd]# salt server2 state.sls httpd.apache

這裡寫圖片描述

4.minion端檢視,安裝成功
[[email protected] ~]# rpm -q httpd php
httpd-2.2.15-29.el6_4.x86_64
php-5.3.3-26.el6.x86_64

另一種方法:

[[email protected] httpd]# vim apache.sls
httpd:
  pkg.installed

php:
  pkg.installed
案例二:部署安裝&啟動httpd
1.部署指令碼
[[email protected] httpd]# vim apache.sls 
apache-install:
  pkg.installed:
    - pkgs:
      - httpd
      - php

apache-service:
  service.running:
    - name: httpd
    - enable: True
2.執行推送
[[email protected] httpd]# salt server2 state.sls httpd.apache

這裡寫圖片描述

2.minion端檢視,開啟80埠,啟動成功

這裡寫圖片描述

案例三:安裝&啟動&配置httpd
1.在httpd中建立files目錄用於存放httpd配置檔案
[[email protected] ~]# cd /srv/salt/httpd/
[[email protected] httpd]# ls
apache.sls
[[email protected] httpd]# mkdir files
2.minion將配置檔案傳給master
[[email protected] ~]# scp /etc/httpd/conf/httpd.conf server1:/srv/salt/httpd/files

這裡寫圖片描述

3.master中更改httpd的埠號為8080
[[email protected]rver1 files]# pwd
/srv/salt/httpd/files
[[email protected] files]# vim httpd.conf 
 136 Listen 8080
4.部署指令碼
[[email protected] httpd]# vim apache.sls 
apache-install:
  pkg.installed:
    - pkgs:
      - httpd
      - php

apache-config:
  file.managed:
    - name: /etc/httpd/conf/httpd.conf
    - source: salt://httpd/files/httpd.conf
    - mode: 644
    - user: root
    - group: root

apache-service:
  service.running:
    - name: httpd
    - enable: True
5.執行推送
[[email protected] httpd]# salt server2 state.sls httpd.apache

這裡寫圖片描述

6.minion端檢視,minion(server2)的配置檔案埠改為8080,但8080埠未開啟,並未載入服務,只有當重啟httpd服務時,才會成功載入服務

這裡寫圖片描述

[[email protected] ~]# vim /etc/httpd/conf/httpd.conf 

這裡寫圖片描述

案例四:安裝&啟動&配置&載入httpd
注意:只有執行更改配置檔案操作後,才會生效
方法一:
[[email protected] httpd]# vim apache.sls 
apache-install:
  pkg.installed:
    - pkgs:
      - httpd
      - php

apache-config:
  file.managed:
    - name: /etc/httpd/conf/httpd.conf
    - source: salt://httpd/files/httpd.conf
    - mode: 644
    - user: root
    - group: root

apache-service:
  service.running:
    - name: httpd
    - enable: True
    - reload: True
    - watch:
      - file: apache-config
方法二:
[[email protected] httpd]# vim apache.sls 
apache-install:
  pkg.installed:
    - pkgs:
      - httpd
      - php

  service.running:
    - name: httpd
    - enable: True
    - reload: True
    - watch:                 ##監控觸發
      - file: /etc/httpd/conf/httpd.conf

/etc/httpd/conf/httpd.conf:
  file.managed:
    - source: salt://httpd/files/httpd.conf
    - mode: 644
    - user: root
    - group: root
案例五:安裝&啟動&配置&載入httpd—檔案分離
1.安裝
[[email protected] httpd]# ls
apache.sls  files
[[email protected] httpd]# mv apache.sls install.sls
[[email protected] httpd]# vim service.sls
apache-install:
  pkg.installed:
    - pkgs:
      - httpd
      - php
[[email protected] httpd]# salt server2 state.sls httpd.install

這裡寫圖片描述

2.載入服務
[[email protected] httpd]# vim service.sls 
/etc/httpd/conf/httpd.conf:
  file.managed:
    - source: salt://httpd/files/httpd.conf
    - mode: 644
    - user: root
    - group: root

apache-service:
  service.running:
    - name: httpd
    - enable: True
    - reload: True
    - watch:
      - file: /etc/httpd/conf/httpd.conf
[[email protected] httpd]# salt server2 state.sls httpd.service

這裡寫圖片描述

3.安裝&載入服務

將以上兩個檔案結合起來,重新寫入service.sls檔案

[[email protected] httpd]# vim service.sls 
include:
  - httpd.install

/etc/httpd/conf/httpd.conf:
  file.managed:
    - source: salt://httpd/files/httpd.conf
    - mode: 644
    - user: root
    - group: root

apache.service:
  service.running:
    - name: httpd
    - enable: True
    - reload: True
    - watch:
      - file: /etc/httpd/conf/httpd.conf
[[email protected] httpd]# salt server2 state.sls httpd.service

這裡寫圖片描述

三、SaltStack部署及案例—原始碼編譯並啟動nginx

1.原始碼編譯nginx

1>下載安裝包到/srv/salt/nginx/files目錄下
[[email protected] ~]# cd /srv/salt/
[[email protected] salt]# mkdir nginx
[[email protected] salt]# ls
httpd  nginx
[[email protected] salt]# cd nginx/
[[email protected] nginx]# mkdir files
[[email protected] nginx]# cd files/
[[email protected] files]# ls
nginx-1.12.0.tar.gz

2>部署指令碼
[[email protected] nginx]# vim install.sls

nginx-install:
  pkg.installed:
    - pkgs:
      - gcc
      - pcre-devel
      - openssl-devel

  file.managed:
    - name: /mnt/nginx-1.12.0.tar.gz
    - source: salt://nginx/files/nginx-1.12.0.tar.gz

  cmd.run:
    - name: cd /mnt && tar zxf nginx-1.12.0.tar.gz && cd nginx-1.12.0 && sed -i.bak 's/#define NGINX_VER          "nginx\/" NGINX_VERSION/#define NGINX_VER          "nginx"'/g src/core/nginx.h && sed -i.bak 's/CFLAGS="$CFLAGS -g"/#CFLAGS="$CFLAGS -g"/g' auto/cc/gcc && ./configure --prefix=/usr/local/nginx --with-http_ssl_module --with-http_stub_status_module --with-threads --with-file-aio &> /dev/null && make &> /dev/null && make install &> /dev/null
    - creates: /usr/local/nginx
[[email protected] nginx]# salt server3 state.sls nginx.install

3>執行推送
[[email protected] nginx]# salt server3 state.sls nginx.install

這裡寫圖片描述

4>測試
minion端(server3)檢視程序,則編譯成功

這裡寫圖片描述

2.啟動(觸發)

1>建立make.sls安裝包
make.sls中包含原始碼編譯必須安裝的外掛
[[email protected] ~]# cd /srv/salt/
[[email protected] salt]# mkdir pkgs
[[email protected] salt]# cd pkgs/
[[email protected] pkgs]# vim make.sls 
make:
  pkg.installed:
    - pkgs:
      - gcc
      - pcre-devel
      - openssl-devel
2>nginx原始碼編譯指令碼
[[email protected] salt]# cd nginx/
[[email protected] nginx]# vim install.sls 
include:
  - pkgs.make
  - users.nginx

nginx-install:
  file.managed:
    - name: /mnt/nginx-1.12.0.tar.gz
    - source: salt://nginx/files/nginx-1.12.0.tar.gz

  cmd.run:
    - name: cd /mnt && tar zxf nginx-1.12.0.tar.gz && cd nginx-1.12.0 && sed -i.bak 's/#define NGINX_VER          "nginx\/" NGINX_VERSION/#define NGINX_VER          "nginx"'/g src/core/nginx.h && sed -i.bak 's/CFLAGS="$CFLAGS -g"/#CFLAGS="$CFLAGS -g"/g' auto/cc/gcc && ./configure --prefix=/usr/local/nginx --with-http_ssl_module --with-http_stub_status_module --with-threads --with-file-aio &> /dev/null && make &> /dev/null && make install &> /dev/null
    - creates: /usr/local/nginx
3>建立nginx使用者相關資訊指令碼
nginx-group:
  group.present:
  - name: nginx
  - gid: 800

nginx-user:
  user.present:
    - name: nginx
    - shell: /sbin/nologin
    - home: /usr/local/nginx
    - createhome: false
    - uid: 800
    - gid: 800
4>nginx管理指令碼
[[email protected] nginx]# vim service.sls 
include:
  - nginx.install
  - users.nginx
/usr/local/nginx/conf/nginx.conf:
  file.managed:
    - source: salt://nginx/files/nginx.conf

nginx-service:
  file.managed:
    - name: /etc/init.d/nginx
    - source: salt://nginx/files/nginx
    - mode: 755

  service.running:
    - name: nginx
    - reload: True
    - watch:
      - file: /usr/local/nginx/conf/nginx.conf
5>nginx啟指令碼
將server2的httpd的啟動指令碼拷貝給server3,進行修改為nginx啟動指令碼
[[email protected] ~]# scp /etc/init.d/httpd server3:/etc/init.d/nginx

這裡寫圖片描述
這裡寫圖片描述
在server3主機上進行nginx啟動指令碼的測試
這裡寫圖片描述
這裡寫圖片描述
將啟動指令碼拷貝到master的目錄下:

[[email protected] ~]# scp /etc/init.d/nginx server1:/srv/salt/nginx/files

6>master上修改nginx的配置檔案
[[email protected] ~]# scp /usr/local/nginx/conf/nginx.conf server1:/srv/salt/nginx/files

這裡寫圖片描述

3.執行推送,進行測試

[[email protected] nginx]# salt server3 state.sls nginx.service

這裡寫圖片描述

四、SaltStack部署—多節點推送實現haproxy負載均衡

實驗環境:

master:

server1:172.25.51.1
######minion:
server1:172.25.51.1
server2:172.25.51.2
server3:172.25.51.3
####具體部署如下:
######1.新增並配置server1節點為minion

[[email protected] ~]# yum install -y salt-minion -y
[[email protected] ~]# vim /etc/salt/minion
 17 master: 172.25.51.1
[[email protected] ~]# /etc/init.d/salt-minion start
[[email protected] ~]# salt-key -L
[[email protected] ~]# salt-key -a server1

這裡寫圖片描述

2.配置yum源(BalanceLoader),使其具有haproxy安裝包
[[email protected] ~]# vim /etc/yum.repos.d/rhel-source.repo 
[LoadBalancer]
name=LoadBalancer
baseurl=http://172.25.51.250/rhel6.5/LoadBalancer
gpgcheck=0

這裡寫圖片描述

3.部署haproxy指令碼,並執行推送於server1
[[email protected] ~]# cd /srv/salt/
[[email protected] salt]# ls
httpd  nginx  pkgs  users
[[email protected] salt]# mkdir haproxy
[[email protected] salt]# cd haproxy/
[[email protected] haproxy]# vim install.sls
haproxy-install:
  pkg.installed:
    - pkgs:
      - haproxy
[[email protected] haproxy]# salt server1 state.sls haproxy.install

這裡寫圖片描述

4.部署安裝&啟動指令碼
[[email protected] haproxy]# mkdir files
[[email protected] haproxy]# cd files/
[[email protected] files]# cp /etc/haproxy/haproxy.cfg .
[[email protected] files]# cd ..
[[email protected] haproxy]# vim install.sls
haproxy-install:
  pkg.installed:
    - pkgs:
      - haproxy

  file.managed:
    - name: /etc/haproxy/haproxy.cfg
    - source: salt://haproxy/files/haproxy.cfg

  service.running:
    - name: haproxy
    - reload: True
    - watch:
      - file: haproxy-install
5.修改配置檔案,負載均衡
[[email protected] files]# vim haproxy.cfg 

這裡寫圖片描述

6.base檔案(高階推送)
[[email protected] ~]# cd /srv/salt/
[[email protected] salt]# vim top.sls

base:
  'server1':
    - haproxy.install
  'server2':
    - httpd.service
  'server3':
    - nginx.service
7.測試:

1>關閉服務

[[email protected] ~]# /etc/init.d/httpd stop
[[email protected] ~]# /etc/init.d/nginx stop

2>配置測試頁

[[email protected] ~]# cd /var/www/html/
[[email protected] html]# vim index.html
server2
[[email protected] ~]# cd /usr/local/nginx/html/
[[email protected] html]# ls
50x.html  index.html
[[email protected] html]# vim index.html 
server3
3.執行高階推送
[[email protected] salt]# salt '*' state.highstate

這裡寫圖片描述

4.網頁訪問172.25.51.1,不斷重新整理頁面,實現負載均衡

這裡寫圖片描述
這裡寫圖片描述

相關推薦

自動化工具SaltStack部署案例

一、基礎介紹 1、簡介 SaltStack是一個伺服器基礎架構集中化管理平臺,具備配置管理、遠端執行、監控等功能,一般可以理解為簡化版的puppet和加強版的func。SaltStack基於Python語言實現,結合輕量級訊息佇列(ZeroMQ)與Python第

自動化工具----saltstack安裝配置

Saltstack 一.環境準備 https://mirrors.aliyun.com/repo/Centos-7.repo https://mirrors.aliyun.com/repo/epel-7.repo 需要以上兩個阿里雲的repo還有本機自身的centos7映象的repo。  

自動化工具---SaltStack安裝部署簡單案例

com 常用模塊 分類 fire thead 批量部署 配置 出現 nio SaltStack原理 SaltStack由Master(服務端)和Minion(客戶端)組成,Master和Minion之間通過ZeroMQ(消息隊列)進行通訊,Master和Minion分別監

自動化工具SaltStack詳細部署【轉】

lib64 time 兩個 功能 .so odi 組件 部分 srv ==========================================================================================一、基礎介紹======

saltStack工具部署master遷移實現的過程詳解

伺服器端:192.168.3.87 客戶端:192.168.3.86、192.168.3.108 1.salt伺服器端安裝 192.168.3.87 rpm -Uvh http://mirrors.yun-idc.com/epel/6Server/x86_64/epel-r

Linux的企業-自動化工具Saltstack(grains、pillar)

saltstack grains、pillar jinja、haproy+keeplived配置內容接上篇redhat6.5server1 172.25.29.1 salt-master server2 172.25.29.2 salt-minion haproy+keeplivedserver3 172

自動化工具安裝部署 chef (一) - 測試環境配置

系統/運維 Linux 最近一直在做tensorflow的研究,看書看視頻群內討論什麽的,有些頭大,抽空刷朋友圈看到有朋友一直關註devops,市面上也有相關人員需求,索性抽空玩一個自動化運維的產品chef,加上之前也有開發過相關運維產品,對比下rundeck,看看這個有什麽好玩。官網https://

自動化工具安裝部署 chef (四) - node的安裝

系統/運維 Linux 原文在此https://docs.chef.io/nodes.html節點分好幾種又加了一臺機器[root@chefnode ~]# cat /etc/hosts先確保hosts裏面都有解析[root@chefserver chef]# scp chefdk-2.4.17-1.

自動化工具安裝部署 chef (二) - server的安裝

系統/運維 Linux 經過一個晚上的下載,終於下載好了安裝前先抓個虛擬機鏡像原始文檔https://docs.chef.io/install_server.html開始安裝安裝完成初始化下[root@chef_server chef]# chef-server-ctl reconfigure初始化失

自動化工具安裝部署 chef (三) - workstation的安裝

系統/運維 Linux workstation原文https://docs.chef.io/workstation.html[root@chef_server etc]# cat /etc/hosts127.0.0.1 localhost localhost.localdomain localhost

自動化工具安裝部署 chef (八)- 分發配置策略

系統/運維 Linux 如果沒有生成chef-repo目錄的話到workstation 先clone一個git 初始目錄git clone git://github.com/opscode/chef-repo.git這裏我已經生成過了knife cookbook site install userwo

自動化工具saltstack

主機名 如果 users color 自動化運維工具 connect 企業版 str 發送 常見自動化運維工具 傳統運維效率低,工作繁瑣且容易出錯重復性事情反復在做,沒有標準化的流程傳統運維的腳本繁多,不方便管理自動化運維要解決的就是這些問題常見的自動化運維工具puppet

自動化工具--saltstack

簡介 SaltStack是一個伺服器基礎架構集中化管理平臺,具備配置管理、遠端執行、監控等功能,基於Python語言實現,給合輕量級訊息佇列(ZeroMQ)與Python第三方模組(Pyzmq、PyCrypto、Pyjinjia2、python-msgpack和PyYAML等)構造。 基本原

自動化工具Saltstack學習筆記(上)

 1.Saltstack簡介Saltstack是一個具備puppet與func功能為一身的集中化,輕量級的自動化運維管理工具,使用python編寫,功能非常強大,可以使用EPEL快速安裝。相比較puppet,安裝和配置更加容易和簡單。下面是Saltstack安裝和基礎配

自動化工具SaltStack-1、SaltStack介紹安裝

自動生成 模塊 模糊匹配 mini 說明 pac roc redhat 通信 1、SaltStack簡介 官方網址:http://www.saltstack.com官方文檔:http://docs.saltstack.comGitHub:https:github.com/s

Saltstack自動化工具 實戰與部署

caf 主動推送 n-k 分鐘 啟動服務 ade 個人觀點 ots 處理 自動化工具比較Puppet也許是四款工具中最深入人心的。就可用操作、模塊和用戶界面而言,它是最全面的。Puppet呈現了數據中心協調的全貌,幾乎涵蓋每一個運行系統,為各大操作系統提供了深入的工具。初始

自動化工具 Ansible ——playbook 劇本詳解簡易案例

Playbook-劇本介紹  Playbook是 一個不同於使用Ansible命令列執行方式的模式,其功能更強大靈活。簡單來說,playbook是一個非常簡單的配置管理和多主機部署系統,不同於任何已經存在的模式,可作為一個適合部署複雜應用程式的基礎。Playbook可以定製配置,可以按照指定的操作步驟有序執

部署 SaltStack 自動化工具,並簡易批量安裝 httpd 服務

SaltStack 介紹  SaltStack 是一個基於 Python 開發的一套架構配置管理工具,採用 C/S模式,server端就是salt的master,client端就是minion,minion與master之間通過ZeroMQ訊息佇列通訊。master監聽4505和4506埠,4505為mas

Saltstack自動化工具(一鍵部署高可用負載均衡叢集)

在上篇部落格中我們利用salt推送了一臺主機上的haproxy為了實現高可用和負載均衡,我們再使用一臺虛擬機器server4搭建叢集 server1和server4組成高可用和負載均衡叢集 在server4 做好底層配置: 在server4上安裝minion,更改配置檔

Saltstack自動化工具 ---- Salt一鍵部署 、一鍵部署原始碼安裝ngixn

Salt,,一種全新的基礎設施管理方式,部署輕鬆,在幾分鐘內可執行起來,擴充套件性好,很容易管理上萬臺伺服器,速度夠快,伺服器之間秒級通訊。 salt底層採用動態的連線匯流排, 使其可以用於編配, 遠端執行, 配置管理等等. 1、安裝配置 [[email&