saltstack 基礎入門文檔

saltstack 和 Puppet Chef 一樣可以讓你同時在多臺服務器上執行命令也包括安裝和配置軟件。Salt 有兩個主要的功能:配置管理和遠程執行。這里講述了saltstack的基本使用方法。

saltstack

簡述

Salt 和 Puppet Chef 一樣可以讓你同時在多臺服務器上執行命令也包括安裝和配置軟件。Salt 有兩個主要的功能:配置管理和遠程執行。

  • 源碼: https://pypi.python.org/pypi/salt
  • 文檔: http://docs.saltstack.com/

安裝

debian/ubuntu

  • 設置debian更新源

wget -q -O- “http://debian.saltstack.com/debian-salt-team-joehealy.gpg.key” | apt-key add -

echo “deb http://debian.saltstack.com/debian wheezy-saltstack main” /etc/apt/sources.list

  • 設置ubuntu更新源

add-apt-repository ppa:saltstack/salt 或

echo deb http://ppa.launchpad.net/saltstack/salt/ubuntu lsb_release -sc main | tee /etc/apt/sources.list.d/saltstack.list

wget -q -O- “http://keyserver.ubuntu.com:11371/pks/lookup?op=get&search=0x4759FA960E27C0A6” | apt-key add -

  • 安裝軟件包
apt-get update
apt-get install salt-master      # On the salt-master
apt-get install salt-minion      # On each salt-minion
apt-get install salt-syndic

RHEL6/CentOS6

  • 設置RHEL/CentOS更新源

rpm -Uvh http://ftp.linux.ncsu.edu/pub/epel/6/i386/epel-release-6-8.noarch.rpm或

rpm -Uvh http://ftp.linux.ncsu.edu/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm

  • 安裝軟件包
yum update
yum install salt-master # On the salt-master
yum install salt-minion # On each salt-minion

基本配置

saltstack 的配置文件格式

Salt默認使用PyAMl語法(http://pyyaml.org) 作為它的模板文件的格式,其他很多模板語言在Salt中是可以使用的。
一定要按照正確的格式書寫YAML,比如最基本的,它使用到兩個空格代替tab,: 或 - 后面要有空格。

例一:

interface: 0.0.0.0
log_file: /var/log/salt/master 
key_logfile: /var/log/salt/key

例二:

file_roots:base:- /srv/salt

服務端配置

主控端基本設置
編輯配置文件 /etc/salt/master,修改如下所示配置項,去掉前面的注釋符

interface: 0.0.0.0
log_file: /var/log/salt/master      # 記錄主控端運行日志
key_logfile: /var/log/salt/key      # 記錄認證證書日志

客戶端配置

受控端基本設置
編輯配置文件 /etc/salt/minion,修改如下所示配置項,去掉前面的注釋符#

master: 42.121.124.237          # 設置主控端IP
id: ubuntu-server-001           # 設定受控端編號
log_file: /var/log/salt/minion  # 記錄受控端運行日志
key_logfile: /var/log/salt/key  # 記錄認證證書日志

小技巧 查看配置文件信息,過濾注釋語句:__

sed -e '/^#/d;/^$/d' /etc/salt/minion

檢查服務

主控端,和受控端 啟動各自的服務,確保服務啟動后沒有任何報錯信息,如果異常請檢查相應日志文件處理

主控端: service salt-master restart
受控端: service salt-minion restart

證書管理

如果一切順利,請繼續!

saltstack 主控端是依靠openssl證書來與受控端主機認證通訊的,受控端啟動后會發送給主控端一個公鑰證書文件,在主控端用 salt-key 命令來管理證書。

salt-key -L     # 用來查看證書情況
salt-key -a     # 用來管理接受證書

受控端證書認證后會顯示如下情形:

Accepted Keys:
ubuntu-server-001
Unaccepted Keys:
Rejected Keys:

主控端和被控端的證書默認都存放在 /etc/salt/pki/ 中,如果遇到證書不生效的情況下,可在主控端證書存放目錄刪除受控端證書,重新認證一下。

簡單的測試

你可以從master 使用一個內置命令 test.ping 來測試他們之間的連接

salt '*' cmd.run test.ping

它應該有如下輸出:

{ubuntu-server-001: True}

測試與外網的連接

salt '*' cmd.run "ping -c 4 baidu.com"

如果能返回正確結果,salt的基本配置就完成了。

進階,配置管理

個人理解,管理一個服務器應用可以從 軟件包,配置文件,服務管理 這個三個最基本角度來出發,要啟用配置管理,首先應對受控端進行額外的配置

啟用擴展配置文件目錄

  • 主控端 /etc/salt/master

    default_include: master.d/*.conf
  • 受控端 /etc/salt/minion

    default_include: master.d/*.conf

配置受控端

  • 配置受控端,以root用戶身份來接受主控端的控制 編輯/etc/salt/minion
user: root
  • 配置受控端同步,每隔60秒與主控端進行同步一次 編輯/etc/salt/minion
schedule:highstate:function: state.highstateseconds: 60

配置主控端

一般來講,Salt的配置管理指令和文件保存在/srv/salt目錄下,這里存放著所有的配置文件,和一些你想要拷貝到從服務器的文件。Salt 的特點之一是包含一個文件服務器。雖然Salt不會在你的主服務器創建系統文件,但是所有的配置管理發生在/srv/salt目錄中。

  • 編輯 /etc/salt/master 取消注釋即刪除#號,配置倉庫根目錄下的 top.sls 為默認入口配置文件,這個配置項可以自定義,基本配置如下:
file_roots:base:- /srv/salt
  • 創建 /srv/salt/top.sis 目錄和文件
base:'*':- ubuntu.vim

詳細解釋一下這個本配置文件的參數

  • base: 默認的的起點配置項:
  • '*': 這個引號內的是匹配對象,針對所有受控主機
  • ubuntu.vim 就是指資源文件/srv/salt/ubuntu/vim.sls

一個簡單的例子:ubuntu 基本系統默是不安裝 vim 我們可以利用配置管理把被托管的ubuntu主機全部安裝上vim

編輯 /srv/salt/ubuntu/vim.sls

vim:pkg:- name: vim- installed

執行命令

salt '*' state.highstate

請注意觀察返回結果,查看/var/log/salt/下面的日志來調試saltstack配置。

一個更復雜的例子:管理ssh服務,并且使用salt托管配置文件

ssh:pkg:- name: ssh- installedservice:- name: ssh- running- reload: True- watch:- file: /etc/ssh/ssh_config
/etc/ssh/ssh_config:file.managed:- source: salt://ubuntu/ssh_config- user: root- group: root- mode: 644

簡要解釋一下配置文件

  • pkg, service , file 這些都是salt的管理模塊,pkg 是包管理模塊; file是文件管理模塊; service 是包服務管理模塊
  • 模塊下一級是各個管理模塊配置項的屬性,以 service: 模塊為例
  • name: ssh ubuntu下的服務腳本名稱是 ssh
  • running 狀態是持續運行,如果受控端配置了自動同步,每格一段時間就會對其狀態進行檢查
  • reload: True 是否重載服務
  • watch: 監視文件
  • 最后兩條屬性的整體含義是如果配置文件 /etc/ssh/ssh_config 發生變化,服務重啟更新
  • source: salt://ubuntu/ssh_config 托管的配置文件實際存儲在 /srv/salt/ubuntu/ssh_config

同樣,使用如下命令來驗證結果需要

salt '*' state.highstate

如果需要管理更復雜的服務器群,下面是一個稍微復雜的例子
/srv/salt/top.sls 內容:

base:'ubuntu-server-*':- ubuntu.vim'ubuntu-server-001':- ubuntu.servers'centos-server-001':- rhel.servers

配置倉庫目錄層次結構

/srv/salt/
├── top.sls
├── rhel
│   └── servers.sls
└── ubuntu├── servers.sls├── ssh_config└── vim.sls

最后,補充一點,把配置倉庫和版本控制工具結合起來,將是一件更美好的事情。

參考

二進制軟件包

rpm deb 不同包管理體系,不同發行版二進制包拆分命名規則不盡相同,相比之下 deb 拆分的力度要更細些。

RHEL6/CentOS 軟件包列表

  • salt
  • salt-master
  • salt-minion
  • salt-api
  • salt-cloud

Deian/Ubuntu 軟件包列表

  • salt-master
  • salt-minion
  • salt-syndic
  • salt-doc
  • salt-common
  • salt-cloud
  • salt-cloud-doc
  • salt-api
  • salt-ssh

下面按照服務端(主控端)和客戶端(受控端)來說明主要功能項。

主控端命令列表

  • /usr/bin/salt 主控命令
  • /usr/bin/salt-cp 批量復制文件
  • /usr/bin/salt-key 證書管理
  • /usr/bin/salt-master 服務端程序
  • /usr/bin/salt-run 管理虛擬機
  • /usr/bin/salt-ssh 管理ssh
  • /usr/bin/salt-syndic master分布式節點服務程序

受控端命令列表

  • /usr/bin/salt-call
  • /usr/bin/salt-minion 客戶端程序

基本操作

基本操作命令通用格式

命令 對象 執行模塊 參數
salt '*' cmd.run "ping -c 4 baidu.com"
'*'      操作對象       可以使用salt命令的擴展模式 -E -G ..
cmd.run  執行模塊       
參數     傳遞給執行模塊的參數

分組功能

編輯 /etc/salt/master

nodegroups:UBUNTU: 'ubuntu-12.04-*'CENTOS: 'centos-6.4-*'

建立分組之后,操作對象使用分組功能才生效

命令示例

salt

  • 測試與受控主機網絡是否通暢

    salt '*' cmd.run test.ping
  • 在全部受控主機行執行命令

    salt '*' cmd.run “uptime”
  • 使用 -E 按照正則匹配操作對象

    salt -E 'ubuntu*' cmd.run “uptime”
  • 使用 -N 按照分組匹配操作對象

    salt -N 'UBUNTU-GROUPS' cmd.run “uptime”
  • 使用 -G 按照查詢信息匹配操作對象選項

    salt -G 'cpuarch:x86_64' grains.item num_cpus
  • 查看受控端模塊函數幫助信息

    salt '*' sys.doc
  • 查看受控端模塊函數幫助信息

    salt '*' sys.doc service

salt-master

  • 啟動服務
    salt-master -d

salt-key

  • 查看證書
    salt-key -L
  • 接受指定的證書
    salt-key -a KeyName
  • 接受所有未認證的證書
    salt-key -A
  • 刪除所有證書
    salt-key -D
  • 刪除指定的證書
    salt-key -d KeyName

salt-cp

*批量復制文件到受控主機

salt-cp '*' /home/vmdisk.img /var/lib/libvirtsh/vmdisk.img

*拷貝小文件很有效,簡單測試,拷貝2.5MB以上的文件就會超時報錯

salt-run

salt-run 是用于管理虛擬機的命令

  • 查詢虛擬機信息

    salt-run virt.hyper_info
  • 查詢虛擬機信息

    salt-run virt.query
  • 基于云鏡像創建一個新的虛擬機

    salt-run virt.init centos1 2 512 salt://centos.img

    salt-ssh

    編輯配置文件 /etc/salt/roster

    ubuntu-12.04-001:
    host: 10.8.0.18
    user: root
    passwd: root
    sudo: True
  • 簡單的測試

    salt-ssh '*' test.ping
  • 測試執行命令

    salt-ssh '*' -r “ifconfig -a”

salt-syndic

salt的master和minion的交互很大程度上都和網絡有關系,比如在管理多個國家的機器的時候(比如大中華局域網),一個master控制多個master,同時被控制的master又可以控制很多的minion,就好比是在 master 和 minions 之間又加了一層的分布式架構。

salt-minion

啟動服務

salt-minion -d

salt-call

內置模塊列表

  • 內置的狀態模塊的完整列表: http://docs.saltstack.com/ref/states/all/index.html
  • 內置的執行模塊的完整列表: http://docs.saltstack.com/ref/modules/all/index.html

參考文檔

  • http://netkiller.github.io/linux/management/saltstack/

唧唧歪歪

  • saltstack 可能由于比較新的緣故,版本之間支持的模塊差異較大,建議最好主控端,受控端使用相同版本的軟件包;

問題:

  • 證書管理 ssh_auth salt 模塊(優先處理)
  • 配置倉庫,符號鏈接
  • 是否支持,配置模板
  • 如何針對 特例機器進行定義配置?
  • 一臺機器是否屬于多個組
  • salt 配置倉庫 致命錯誤情況能否回滾
  • 是否支持 lsattr 如何保證重要配置文件不輕易被更改
  • 如何輸出給程序解析結果
  • 怎么支持自定義的模塊
  • 主機命名分組避免使用

來自:http://my.oschina.net/u/877567/blog/182923

轉載于:https://www.cnblogs.com/wajika/p/6272827.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/259751.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/259751.shtml
英文地址,請注明出處:http://en.pswp.cn/news/259751.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

出現的是亂碼_cad狀態欄出現了方框亂碼怎么辦?

左下角閱讀原文看CAD視頻好課推薦:1、CAD2014:點擊查看 2、室內&全屋:點擊查看 3、CAD2019:點擊查看4、CAD2018:點擊查看5、Bim教程:點擊查看6、室內手繪:點擊查看7、CAD三維:點…

UILabel 詳解

UILabel 多行文字自動換行 (自動折行)1.UIView *footerView [[UIView alloc] initWithFrame:CGRectMake(10, 100, 300, 180)]; 2. UILabel *label [[UILabel alloc] initWithFrame:CGRectMake(10, 100, 300, 150)]; 3. label.text "…

mysql創建數據庫指定字符集

mysql 創建 數據庫時指定編碼很重要,很多開發者都使用了默認編碼,但是我使用的經驗來看,制定數據庫的編碼可以很大程度上避免倒入導出帶來的亂碼問題。 我們遵循的標準是,數據庫,表,字段和頁面或文本的編碼…

onclick實現超鏈接_給超鏈接加onclick事件

在動態網頁中,常常需要在單擊超鏈接時處理一些數據,而不是跳轉一個網頁。在這種情況下,通常有以下三種處理方式:不設置標簽的href屬性,只設置onclick屬性。在這種處理方式下,通常超鏈接文本會和正文的文本以…

Android 布局以及優化資料匯總

2019獨角獸企業重金招聘Python工程師標準>>> 1.性能優化之布局優化 2.Android 開源庫 V - Layout 轉載于:https://my.oschina.net/zhugenqiang/blog/822942

AS3容易被忽略的一些特性

1.給sprite設置背景色 給sprite設置背景色,spr.opaqueBackground 0xFFCC33, 在尺寸變化的時候自動重繪背景。需要注意的是背景不能接受鼠標事件,接受鼠標事件的話,需要用graphics繪制背景。 2.在ByteArray里writeUTF("中方漢字")&…

每天一個JavaScript實例-canvas繪圖

<!DOCTYPE html> <html> <head> <meta http-equiv"Content-Type" content"text/html; charsetUTF-8" /> <title>每天一個JavaScript實例-canvas繪圖</title> <style>.canvas{width:600px;height:500px;} </s…

mysql字符集排序規則_Mysql 字符集及排序規則

一、字符集字符集&#xff1a;就是用來定義字符在數據庫中的編碼的集合。常見的字符集&#xff1a;utf8、Unicode、GBK、GB2312(支持中文)、ASCCI(不支持中文)二、字符集排序規則作者本人用的是utf8_general_ci后綴ci (case insensitive)意味不區分大小寫(大小寫不敏感)&#x…

驅動06.觸摸屏驅動程序

1.觸摸屏的簡介 觸摸屏是標準的輸入設備&#xff0c;在寫驅動程序時采用的之前講過的輸入子系統那套框架。我們無需關心對設備文件的操作&#xff0c;只需關心對硬件寄存器的操作和上報事件即可。 觸摸屏是附在LCD上的一層薄膜&#xff0c;并不是我們平時認識的觸摸屏&#xff…

編碼文件AndroidStudio初體驗:解決Execution failed for task ':TestAndroid:compileDebug'.

最近研究編碼文件&#xff0c;稍微總結一下&#xff0c;以后繼續補充&#xff1a; Execution failed for task :TestAndroid:compileDebug.有各種各樣原因&#xff0c;具體就請自己進cmd編譯看什么地方出錯 進入項目的gradle文件地點目錄打 gradlew compileDebug --stacktrace來…

我的大二

一不小心就已經大二了&#xff0c;時間真的過的很快&#xff0c;不知不覺和學長大大一起走過了7個多月~我是個很幸運的人&#xff0c;對此我感激所有人&#xff0c;尤其是那些愛我的&#xff0c;以及教會我做人&#xff0c;指引我許多的人們&#xff01; 不得不承認&#xff0c…

2016國產開源軟件Top100(Q1)

2016國產開源軟件Top100(Q1) 隨著互聯網的發展、開放標準的普及和虛擬化技術的應用等諸多IT新領域的創新及拓展&#xff0c;開源技術憑借其開放性、低成本、穩定性、靈活性、安全性和技術創新性等特點迅速走向成熟&#xff0c;逐步發展成為一種主流模式&#xff0c;日益改變著全…

mysql lenenc int_MySQL-NonMySQL同步工具源碼解讀——確定同步位置

經過上一節的鑒權過后&#xff0c;程序已經受主庫認可&#xff0c;并且可以像主庫發起同步請求。在發起請求之前&#xff0c;還有一個可選的步驟&#xff1a;確認同步時間點。同步時間點由兩個屬性進行標識&#xff1a;Binlog文件名、偏移量。工具支持自定義時間點&#xff0c;…

DancingLinks刷題集

HDU 3663 Power Stations 精確覆蓋 題意&#xff1a;每個城市i有xi->yi天可以成為發射站&#xff0c;發射站覆蓋范圍為與該站有一條邊鏈接的城市。 同時&#xff0c;每個每天城市必須且只能被一個發射站覆蓋 天數D<5。 每個城市的發射站關閉后就不再開啟。即只能選擇一段…

【web前端優化】前端無優化,庸人自擾之!

前言 我發現一個人厲害不只是他厲害&#xff0c;他的名字也一定要跟著厲害才行&#xff0c;比如我刀狂劍癡葉小釵了&#xff0c;若是老夫叫做刀狂劍癡葉小草&#xff0c;估計就缺少氣勢了&#xff01;&#xff01;&#xff01; 又如百世經綸一頁書&#xff0c;如果叫做百世經綸…

react源碼解讀 {createClass}

對一個框架源碼的解讀&#xff0c;既有利于更深入地了解框架&#xff0c;使用上更得心應手&#xff0c;又可以學習到其中代碼組織的思路&#xff0c;吸收其精華簡潔的寫法以便于日常工作上使用。下面我就挑選近年大熱門react&#xff08;15.3.1&#xff09;&#xff0c;從中剖析…

mysql分析sql語句性能_sql語句執行性能分析

explain根據上面提到的explain去比較&#xff0c;就可以得出結果了mysql> explain select * from users limit 1000,20;---------------------------------------------------------------------------------| id | select_type | table | type | possible_keys | key | key…

sourceTree添加git密鑰步驟

給多個遠程服務器比如https://github.com/wangjian2014/wjtest/blob/master/wj.txt添加public密鑰 本地服務器添加private密鑰 SSH Client 選擇PuTTY/Plink 選擇Generate&#xff0c;生成public 和private密鑰&#xff0c;將public密鑰數據復制到遠程服務器上面 保存private…

[tomcat] 配置數據源介紹

從tomcat5.5開始,內置了DBCP數據源的實現。tomcat數據源提供兩種配置方式,兩種數據源的訪問范圍不同&#xff0c; 1.全局數據源:顧名思義在tomcat應用下的所有web都可以訪問。 2.局部數據源&#xff1a;適用單個web應用 ★★ 不管以那種方式都得提供特定數據源的jdbc驅動。 此…

background-size

background-size:contain;contain:包含 按比例調整圖片&#xff0c;使得圖片的寬度自適應容器的寬度。 相當于在ps中&#xff0c;約束比例設置原始圖片的寬度值等于容器的寬度值。 如果圖片過大&#xff0c;等比壓縮后容器的高度方向上可能會有空白。 background-size:cover;co…