1. 程式人生 > >Saltstack自動化運維工具 ---- Salt一鍵部署 、一鍵部署原始碼安裝ngixn

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

Salt,,一種全新的基礎設施管理方式,部署輕鬆,在幾分鐘內可執行起來,擴充套件性好,很容易管理上萬臺伺服器,速度夠快,伺服器之間秒級通訊。

salt底層採用動態的連線匯流排, 使其可以用於編配, 遠端執行, 配置管理等等.

1、安裝配置

[[email protected] ~]# cd /etc/yum.repos.d
[[email protected] yum.repos.d]# ls
rhel-source.repo
[[email protected] yum.repos.d]# vim rhel-source.repo 
[salt]
name=salt
baseurl=http://172.25
.50.250/rhel6 gpgcheck=0
[[email protected] yum.repos.d]# yum repolist

這裡寫圖片描述

[[email protected] yum.repos.d]# yum install salt-master

在server2中,同樣擦作,配置 yum 源

這裡寫圖片描述

[[email protected] yum.repos.d]# yum install -y salt-minion

2、配置 minion server2 的配置檔案

[[email protected] yum.repos.d]# cd /etc/salt/
[[email protected] salt]# ls cloud cloud.maps.d master minion.d proxy.d cloud.conf.d cloud.profiles.d master.d pki roster cloud.deploy.d cloud.providers.d minion proxy [[email protected] salt]# vim minion

這裡寫圖片描述

[root@server2 salt]# /etc/init.d/salt-minion start
Starting salt-minion:root:server2 daemon: OK [root@server2 salt]# vim /etc/hosts

3、配置 master server1
master端使用 salt-key -L 命令檢視到已經簽名的客戶端

[root@server1 yum.repos.d]# cd /etc/salt
[root@server1 salt]# /etc/init.d/salt-master start
[root@server1 salt]# salt-key -L
[root@server1 salt]# salt-key -A  ##salt-key -A新增所有
[root@server1 salt]# salt-key -L

這裡寫圖片描述

[root@server1 salt]# vim /etc/hosts
[root@server1 salt]# salt server2 test.ping  ##test.ping檢測通訊是否正常
[root@server1 salt]# salt server2 cmd.run hostname
[root@server1 salt]# salt server2 cmd.run 'df -h'

這裡寫圖片描述

說明 master 和 minion 連線成功

4、更寫 salt 的配置檔案,使master 可以控制 minion

[root@server1 salt]# cd /etc/salt/
[root@server1 salt]# cd pki/
[root@server1 pki]# ls
master  minion
[root@server1 pki]# ll
total 8
drwx------ 7 root root 4096 816 21:30 master
drwxr-xr-x 2 root root 4096 223 2017 minion
[root@server1 pki]# cd master/
[root@server1 master]# ls
master.pem  minions           minions_denied  minions_rejected
master.pub  minions_autosign  minions_pre
[root@server1 master]# md5sum master.pub 
aa5b833250bbb850762298fb8e931d96  master.pub
在minion端的 /etc/salt/pki/minion 目錄下面會多出一個minion_master.pub 檔案

這裡寫圖片描述

[root@server2 salt]# cd /etc/salt/
[root@server2 salt]# cd pki/
[root@server2 pki]# cd minion/
[root@server2 minion]# ll
total 12
-rw-r--r-- 1 root root  450 816 21:42 minion_master.pub
-r-------- 1 root root 1674 816 21:37 minion.pem
-rw-r--r-- 1 root root  450 816 21:37 minion.pub
[root@server2 minion]# md5sum minion.pub   ##私鑰
efaaca917f3e388ba5b5bb04d3c4bf62  minion.pub
[root@server2 minion]# md5sum minion_master.pub  ##公鑰,與master 公鑰一一樣
aa5b833250bbb850762298fb8e931d96  minion_master.pub

這裡寫圖片描述

與master端的 master.pub一致

5、在master server1 檢視埠

[root@server1 minions]# netstat -antlp   

這裡寫圖片描述

4505 :master 端有長連結

這裡寫圖片描述

[root@server1 salt]# yum install -y python-setproctitle.x86_64 
[[email protected] salt]# pwd
/etc/salt
[[email protected] salt]# ls
cloud         cloud.deploy.d  cloud.profiles.d   master    minion    pki    proxy.d
cloud.conf.d  cloud.maps.d    cloud.providers.d  master.d  minion.d  proxy  roster
[[email protected] salt]# vim master
[[email protected] salt]# /etc/init.d/salt-master restart
Stopping salt-master daemon:                               [  OK  ]
Starting salt-master daemon:                               [  OK  ]
[[email protected] salt]# mkdir /srv/salt

這裡寫圖片描述

6、一鍵部署httpd

[root@server1 salt]# cd /srv/salt/
[root@server1 salt]# ls
[root@server1 salt]# mkdir httpd
[root@server1 salt]# cd httpd/
[root@server1 httpd]# ls
[root@server1 httpd]# vim install.sls

這裡寫圖片描述

執行,在minion端自動安裝了httpd服務,將httpd的配置檔案放到master的base/httpd/files下

[root@server1 httpd]# salt server2 state.sls httpd.install

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

這時,我們去server2檢視,http和php是否下載成功

這裡寫圖片描述

[root@server1 salt]# cd /srv/salt/httpd/
[root@server1 httpd]# ls
install.sls
[root@server1 httpd]# vim install.sls
[root@server1 httpd]# salt server2 state.sls httpd.install

這裡寫圖片描述

這裡寫圖片描述

之前我們在server2檢視的時侯,並沒有httpd的80埠。在server1執行後,現在我們再次檢視

這裡寫圖片描述

[root@server1 httpd]# vim install.sls
[root@server1 httpd]# salt server2 state.sls httpd.install

這裡寫圖片描述

檢視
這裡寫圖片描述

再次更改:
首先我們要在server1建立一個目錄來放置httpd的配置檔案;

[root@server1 httpd]# pwd
/srv/salt/httpd
[root@server1 httpd]# ls
install.sls
[root@server1 httpd]# mkdir files
[root@server1 httpd]# ls
files  install.sls
[root@server1 httpd]# cd files/
[root@server1 files]# ls

其次我們需要將server2 的httpd的配置檔案傳送給server1。

[[email protected] salt]# ll /etc/httpd/conf/httpd.conf 
-rw-r--r-- 1 root root 34418 8月   2 2013 /etc/httpd/conf/httpd.conf
[[email protected] salt]# scp /etc/httpd/conf/httpd.conf server1:/srv/salt/httpd/files/
The authenticity of host 'server1 (172.25.50.1)' can't be established.
RSA key fingerprint is 52:35:3e:8a:7b:70:bf:05:cb:6f:84:bc:a0:cf:4e:42.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added 'server1,172.25.50.1' (RSA) to the list of known hosts.
[email protected]'s password: 

此時在master端更改配置,在minion端生效,這裡我們來改變埠進行測試

現在httpd服務是80埠

在master端更改httpd的配置檔案,將埠改為8080

[root@server1 files]# ls
httpd.conf
[root@server1 files]# ll
total 36
-rw-r--r-- 1 root root 34418 816 23:56 httpd.conf
[root@server1 files]# vim httpd.conf 

這裡寫圖片描述
更改後,md5sum 兩邊就不一樣了

[root@server1 files]# md5sum httpd.conf
b7ca7a0e786418ba7b5ad84efac70265  httpd.conf
[root@server2 salt]#  md5sum /etc/httpd/conf/httpd.conf
27a5c8d9e75351b08b8ca1171e8a0bbd  /etc/httpd/conf/httpd.conf

這時,我們將更改埠的程式寫入檔案,並執行

方法一:

[root@server1 httpd]# vim install.sls 
[root@server1 httpd]# salt server2 state.sls httpd.install

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

方法二:

[[email protected] httpd]# vim files/httpd.conf 
將剛才的8080改為80
[[email protected] httpd]# vim install.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
[[email protected] httpd]# salt server2 state.sls httpd.install

這裡寫圖片描述

我們再去server2 檢視:

這裡寫圖片描述

方法三:

[[email protected] httpd]# vim files/httpd.conf 
將剛才的80改為8080
[[email protected] httpd]# vim install.sls

httpd:
  pkg.installed

php:
  pkg.installed

apache:
  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
 [[email protected] httpd]# salt server2 state.sls httpd.install                     

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

再去server2 檢視:

這裡寫圖片描述

一鍵部署原始碼安裝ngixn

1、我們編寫一個安裝nginx的檔案

先要準備nginx原始碼安裝的依賴性,在base目錄下建立pkgs目錄,編輯install.sls

在準備一臺機器,server3做minion來安裝部署ngxin

[root@server1 salt]# ls
httpd
[root@server1 salt]# mkdir nginx
[root@server1 salt]# cd nginx/
[root@server1 nginx]# ls
[root@server1 nginx]# pwd
/srv/salt/nginx
[root@server1 nginx]# vim install.sls
[root@server1 nginx]# cd /etc/salt/
[root@server1 salt]# salt-key -L
[root@server1 salt]# salt-key -a server3
[root@server1 salt]# salt-key -L

這裡寫圖片描述

[root@server1 ~]# cd /srv/salt/
[root@server1 salt]# ls
httpd  nginx
[root@server1 salt]# cd nginx/
[root@server1 nginx]# ls
install.sls
[root@server1 nginx]# vim install.sls 
[root@server1 nginx]# mkdir files
[root@server1 nginx]# ls
files  install.sls
[root@server1 nginx]# cd files/
[root@server1 files]# ls
nginx-1.14.0.tar.gz
[[email protected] salt]# cd nginx/
[[email protected] nginx]# ls
files  install.sls
[[email protected] nginx]# vim install.sls 

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

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

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

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

我們去server3檢視

[root@server3 salt]# ps ax

這裡寫圖片描述

說明我們的檔案編寫沒有問題,那麼就繼續編寫。

還原操作環境:

[root@server3 nginx-1.14.0]# cd
[root@server3 ~]# cd /mnt
[root@server3 mnt]# ls
nginx-1.14.0  nginx-1.14.0.tar.gz
[root@server3 mnt]# rm -fr nginx-1.14.0
[root@server3 mnt]# ls
nginx-1.14.0.tar.gz

server1:

[[email protected] nginx]# vim install.sls 
[[email protected] nginx]# salt server3 state.sls nginx.install

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

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

  cmd.run:
    - name: cd /mnt && tar zxf nginx-1.14.0.tar.gz && cd nginx-1.14.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
[[email protected] nginx]# salt server3 state.sls nginx.install

這裡寫圖片描述

再去server3檢視:

[root@server3 mnt]# ps ax

這裡寫圖片描述

2、寫一個開啟nginx的檔案:

[[email protected] nginx]# vim service.sls
[[email protected] nginx]# ls
files  install.sls  service.sls
[[email protected] nginx]# vim service.sls

include:
  - nginx.install

nginx-service:
  cmd.run:
    - name: /usr/local/nginx/sbin/nginx
~                                         
[[email protected] nginx]# salt server3 state.sls nginx.service

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

去server3 檢視:出現了80埠

這裡寫圖片描述

3、編寫檔案 用指令碼來安裝並開啟 nginx

在files裡有配置檔案和寫好的啟動ngixn指令碼

[[email protected] nginx]# ls
files  install.sls  service.sls
[[email protected] nginx]# cd files
[[email protected] files]# ls
nginx  nginx-1.14.0.tar.gz  nginx.conf
[[email protected] files]# vim nginx        ##這個就是nginx指令碼
[[email protected] nginx]# vim service.sls

include:
  - nginx.install

/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

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

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

再去server3檢視:nginx 安裝,並開啟。

這裡寫圖片描述

4、修改 nginx 的配置檔案

在server3 minion端將nginx.conf配置放到server1在server6 minion端將nginx.conf配置放到server4 master的指定目錄下 master的指定目錄下

[root@server1 nginx]# vim files/nginx.conf 

這裡寫圖片描述

[[email protected] nginx]#  cd ..
[[email protected] salt]# ls
httpd  nginx
[[email protected] salt]# mkdir users
[[email protected] salt]# cd users/
[[email protected] users]# ls
[[email protected] users]# vim nginx.sls

nginx-group:
  group.present:
    - name: nginx
    - gid: 800

nginx-user:
  user.present:
    - name: nginx
    - uid: 800
    - gid: 800
    - shell: /sbin/nologin
    - createhome: False
    - home: /usr/local/nginx

這裡寫圖片描述

[root@server1 users]# cd ..
[root@server1 salt]# ls
httpd  nginx  users
[root@server1 salt]# cd nginx/
[root@server1 nginx]# ls
files  install.sls  service.sls
[root@server1 nginx]# vim service.sls 

這裡寫圖片描述

[root@server1 nginx]# salt server3 state.sls nginx.service

這裡寫圖片描述

再去 server3 檢視是否建立使用者成功

這裡寫圖片描述

5、將建立使用者加入 nginx.install 一步到位

[root@server1 salt]# ls
httpd  nginx  users
[root@server1 salt]# mkdir pkgs
[root@server1 salt]# cd pkgs/
[root@server1 pkgs]# vim make.sls

make-gcc:
  pkg.installed:
    - pkgs:
      - pcre-devel
      - openssl-devel
      - gcc

[root@server1 pkgs]# cd ..
[root@server1 salt]# ls
httpd  nginx  pkgs  users
[root@server1 salt]# cd nginx/
[root@server1 nginx]# vim install.sls

這裡寫圖片描述

[root@server1 nginx]# salt server3 state.sls nginx.install

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

相關推薦

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

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

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

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

saltstack自動化工具搭建個人筆記

技術分享 install size 為什麽 數據 font status 程序包 -c 至於為什麽選擇saltstack,因為Puppet、Chef基於Ruby開發,而ansible、saltstack基於python開發,便於後期二次,良好的可移植性。 又,ansible

Saltstack 自動化工具詳細介紹

pre 地址 .tar.gz 好的 publish net 組織 初始 int Saltstack 簡介什麽是saltstack? Saltstack是基於python開發的一套C/S架構配置管理工具? 使用SSL證書簽方的方式進行認證管理? 底層使用ZeroMQ消息隊列p

Saltstack自動化工具 實戰與部署

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

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

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

Saltstack 自動化工具

Saltstack是一個伺服器基礎架構集中化管理平臺,具備配置管理、遠端執行、監控等功能,可以理解為簡化版的puppet,它基於python語言實現,結合輕量級訊息佇列(ZeroMQ)與python第三方模組構建。具備以下特點:   部署簡單、方便 支援大部分UNIX/Linux及Window

利用saltstack自動化工具結合keepalived實現高可用負載均衡

在上次實驗“saltstsck自動化運維工具實現負載均衡”的基礎上,也就是在server3端配置實現server4端的httpd和server5端的nginx負載均衡,繼續進行操作實現高可用: (本文所有主機ip均為172.25.17網段,主機名和ip相對應。

saltstack自動化工具

一.saltstack簡介 salt stack 是什麼? salt是一種新型的基礎架構管理方法。容易的在幾分鐘之內即可配置執行,可伸縮的足以管理成千上萬的伺服器,足夠快的在幾秒只內完成溝通。Salt通過分發一個動態的配置介面,可以被用來,配置,遠端執行,配置管理等

自動化工具之Puppet常用資源(

  前文我們聊到了puppet的架構,單機模型和master/agent模型的工作流程以及puppet的基礎使用,回顧請參考https://www.cnblogs.com/qiuhom-1874/p/14052241.html;今天我們主要來了解下puppet的核心資源的使用;   什麼是資源?   在pup

自動化工具 Ansible ,SaltStack,Salt,Puppet

Ansible關注的重點是力求精簡和快速,而且不需要在節點上安裝代理軟體。因此,Ansible通過SSH執行所有功能。需要管理的節點被新增到Ansible配置環境,SSH授權金鑰被附加到每個節點上,這與執行Ansible的使用者有關。一旦完成了這步,Ansibl

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

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

Linux的企業-自動化工具Saltstack(grainspillar)

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

自動化工具Saltstack

自動化 運維工具 saltstack 一、簡介what is Saltstack?Saltstack是一個具備puppet與func功能為一身的集中化管理平臺,saltstack基於python實現,功能十分強大,適合大規模批量管理服務器,並且它比 Puppet 更容易配置。saltstack具

自動化工具——ansible詳解(

數據 修改時間 們的 ransac 例如 ces 備份文件 其中 其他 ansible 簡介 ansible 是什麽?   ansible是新出現的自動化運維工具,基於Python開發,集合了眾多運維工具(puppet、chef、func、fabric)的優點,實現了批量系

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

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

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

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

自動化工具Ansible實戰()簡介和部署

Ansible 自動化運維 一、Ansible的介紹 Ansible是新出現的自動化運維工具,基於Python開發,集合了眾多運維工具(puppet、cfengine、chef、func、fabric)的優點。實現了批量系統配置、批量程序部署、批量運行命令等功能。Ansible是基於模塊工作的,本身沒

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

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

自動化工具saltstack

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