日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

saltstack的基础入门文档

發(fā)布時間:2025/7/14 编程问答 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 saltstack的基础入门文档 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

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


目錄[-]

  • saltstack

  • 簡述

  • 安裝

  • debian/ubuntu

  • RHEL6/CentOS6

  • 基本配置

  • 服務(wù)端配置

  • 客戶端配置

  • 檢查服務(wù)

  • 證書管理

  • 簡單的測試

  • salt的基本使用

  • 實時管理

  • nodegroup

  • targeting

  • 配置管理,或稱狀態(tài)管理

  • 配置受控端

  • 配置主控端,開啟配置管理功能

  • 稍微復(fù)雜的例子:管理ssh服務(wù)

  • 參考

  • 二進(jìn)制軟件包

  • 主控端命令列表

  • 受控端命令列表

  • 啟用擴(kuò)展配置文件目錄

  • 命令示例

  • salt

  • salt-master

  • salt-key

  • salt-cp

  • salt-run

  • salt-ssh

  • salt-syndic

  • salt-minion

  • salt-call

  • 內(nèi)置模塊列表

  • 參考文檔

  • 唧唧歪歪

  • FAQ:

saltstack

簡述

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

  • 源碼: https://pypi.python.org/pypi/salt

  • 文檔: http://docs.saltstack.com/

安裝

debian/ubuntu

  • 設(shè)置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
  • 設(shè)置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.listwget?-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

  • 設(shè)置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/

[epel] name=Extra?Packages?for?Enterprise?Linux?6 baseurl=http://download.fedoraproject.org/pub/epel/6/x86_64 failovermethod=priority enabled=1 gpgcheck=1 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-6
  • 安裝軟件包

yum?update yum?install?salt-master?#?On?the?salt-master yum?install?salt-minion?#?On?each?salt-minion

基本配置

saltstack 的配置文件格式

Salt默認(rèn)使用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

服務(wù)端配置

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

interface:?0.0.0.0??????????????????#?interface?(服務(wù)端監(jiān)聽IP),0.0.0.0?是監(jiān)聽所有IP log_file:?/var/log/salt/master??????#?記錄主控端運行日志 key_logfile:?/var/log/salt/key??????#?記錄認(rèn)證證書日志

master默認(rèn)監(jiān)聽兩個端口, 4505(publish_port)為salt的消息發(fā)布系統(tǒng),4506(ret_port)為salt客戶端與服務(wù)端通信的端口,所以確保客戶端能跟服務(wù)端的這2個端口通信

客戶端配置

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

master:?42.121.124.237??????????#?設(shè)置主控端IP id:?ubuntu-server-001???????????#?設(shè)定受控端編號 log_file:?/var/log/salt/minion??#?記錄受控端服務(wù)日志 key_logfile:?/var/log/salt/key??#?記錄認(rèn)證證書日志

最基本字段:

  • master: 服務(wù)端,

  • 主機(jī)名 id: 客戶端主機(jī)名(在服務(wù)端看到的客戶端的名字,可以不設(shè)置,默認(rèn)與hostname相同)

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

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

檢查服務(wù)

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

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

證書管理

如果一切順利,請繼續(xù)!

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

salt minion和master的認(rèn)證過程:

  • minion在第一次啟動時,會在/etc/salt/pki/minion/下自動生成minion.pem(private key), minion.pub(public key),然后將minion.pub發(fā)送給master

  • master在接收到minion的public key后,通過salt-key命令accept minion public key,這樣在master的/etc/salt/pki/master/minions下的將會存放以minion id命名的public key, 然后master就能對minion發(fā)送指令了

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

受控端證書認(rèn)證后會顯示如下情形:

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

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

簡單的測試

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

salt?'*'?cmd.run?test.ping

它應(yīng)該有如下輸出:

ubuntu-server-001:?True

測試與外網(wǎng)的連接

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

salt更多命令及手冊

salt?'*'?sys.doc

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


salt的基本使用

salt按照操作模式可以分為實時管理和配置管理:

遠(yuǎn)程執(zhí)行,也可以稱為實時管理: 通過執(zhí)行命令來完成管理任務(wù),優(yōu)點就是實時性高,缺點就是無法跟蹤,保存配置狀態(tài);?
配置管理,也可以稱為狀態(tài)管理: 通過編寫特定的文件用來記錄目標(biāo)系統(tǒng)的配置狀態(tài),然后將這些受控主機(jī)會定期同步這些配置狀態(tài)信息;

實時管理

有時候我們需要臨時的查看一臺或多臺機(jī)器上的某個文件,或者執(zhí)行某個命令,最通用的模塊是 cmd.run

  • 基本操作命令通用格式

格式:?命令?對象?執(zhí)行模塊?參數(shù) 示例:salt?'*'?cmd.run?"ping?-c?4?baidu.com"
  • '*' target,操作對象,可以使用salt命令的擴(kuò)展模式 -E -G 等

  • cmd.run func, 執(zhí)行模塊,函數(shù)

  • 參數(shù) args, 傳遞給 執(zhí)行模塊的參數(shù),

salt也將一些常用的命令做了集成,比如,查看所有節(jié)點磁盤使用情況:

salt?'*'?disk.usage

其他命令示例:

salt?'*'?grains.ls??????查看grains分類 salt?'*'?grains.items???查看grains所有信息 salt?'*'?grains.item?osrelease?查看grains某個信息 salt?'*'?pillar.items???查看pillar所有信息

更多請參考文檔:http://docs.saltstack.com/ref/modules/all/index.html

nodegroup

作用:對minion進(jìn)行分組

參考文檔: http://docs.saltstack.com/topics/targeting/nodegroups.html

編輯 /etc/salt/master 啟用分組,最基本分組示例:

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

建立分組之后,操作對象使用分組功能才生效,更多示例:

nodegroups:group1:?'L@foo.domain.com,bar.domain.com,baz.domain.com?or?bl*.domain.com'group2:?'G@os:Debian?and?foo.domain.com'

在state或者pillar中引用的時候,如下:

base:group1:-?match:?nodegroup????-?webserver

請確保這條屬性存在

-?match:?nodegroup

更多請參考文檔:http://docs.saltstack.com/topics/targeting/nodegroups.html

targeting

從最基本的測試命令來講述:

salt?'*'?test.ping

引號中以實現(xiàn)很強(qiáng)大的minion的過濾與匹配技術(shù)

常用命令:

salt?'shell正則'?命令 salt?-E?'prel?正則'?命令 salt?-N??GroupName??命令 salt?-L?'server_id1,server_id2,server_id3'?命令

示例:

salt?-C?'webserv*?and?G@os:Debian?or?E@web-dc1-srv.*'?test.ping

更多請參考官方文檔: http://docs.saltstack.com/topics/targeting/compound.html

配置管理,或稱狀態(tài)管理

個人理解,管理一個服務(wù)器應(yīng)用可以從 軟件包,配置文件,服務(wù)管理 這個三個最基本角度來出發(fā),要啟用配置管理,首先應(yīng)對受控端進(jìn)行額外的配置

配置受控端

配置受控端主機(jī),以root用戶身份來接受主控端主機(jī)的管理

  • 編輯/etc/salt/minion

user:?root

配置主控端,開啟配置管理功能

Salt的配置管理指令和文件保存在默認(rèn)在/srv/salt目錄下,這里存放著所有的配置文件,和一些你想要拷貝到從服務(wù)器的文件。

配置主控端,編輯 /etc/salt/master 文件

file_roots:base:-?/srv/salt

手動創(chuàng)建目錄和配置文件 /srv/salt/top.sls

  • /srv/salt/top.sls 為默認(rèn)入口配置文件,這個配置項可以自定義,基本配置如下:

base:'*':-?ubuntu.vim

詳細(xì)解釋一下這個本配置文件的參數(shù)

  • base: 默認(rèn)的的起點配置項:

  • '*': 這個引號內(nèi)的是匹配對象,針對所有受控主機(jī)

  • ubuntu.vim 就是指資源文件/srv/salt/ubuntu/vim.sls

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

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

vim:pkg:-?name:?vim-?installed

執(zhí)行命令

salt?'*'?state.highstate

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


稍微復(fù)雜的例子:管理ssh服務(wù)

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

  • /srv/salt/top.sls 內(nèi)容:

base:'*':-?ubuntu.ssh
  • /srv/salt/ubuntu/ssh.sls

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 是包服務(wù)管理模塊

  • 模塊下一級是各個管理模塊配置項的屬性,以 service: 模塊為例

  • name: ssh ubuntu下的服務(wù)腳本名稱是 ssh

  • running 狀態(tài)是持續(xù)運行,如果受控端配置了自動同步,每格一段時間就會對其狀態(tài)進(jìn)行檢查

  • reload: True 是否重載服務(wù)

  • watch: 監(jiān)視文件

  • 最后兩條屬性的整體含義是如果配置文件 /etc/ssh/ssh_config 發(fā)生變化,服務(wù)重啟更新

  • source: salt://ubuntu/ssh_config 托管的配置文件實際存儲在 /srv/salt/ubuntu/ssh_config

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

salt?'*'?state.highstate

參考

二進(jìn)制軟件包

rpm deb 不同包管理體系,不同發(fā)行版二進(jìn)制包拆分命名規(guī)則不盡相同,相比之下 deb 拆分的力度要更細(xì)些。

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

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

主控端命令列表

  • /usr/bin/salt 主控命令

  • /usr/bin/salt-cp 批量復(fù)制文件

  • /usr/bin/salt-key 證書管理

  • /usr/bin/salt-master 服務(wù)端程序

  • /usr/bin/salt-run 管理虛擬機(jī)

  • /usr/bin/salt-ssh 管理ssh

  • /usr/bin/salt-syndic master分布式節(jié)點服務(wù)程序

受控端命令列表

  • /usr/bin/salt-call

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

啟用擴(kuò)展配置文件目錄

  • 主控端 /etc/salt/master

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

    default_include:?master.d/*.conf

命令示例

salt

  • 測試與受控主機(jī)網(wǎng)絡(luò)是否通暢

    salt?'*'?cmd.run?test.ping


  • 在全部受控主機(jī)行執(zhí)行命令

    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


  • 查看受控端模塊函數(shù)幫助信息

    salt?'*'?sys.doc


  • 查看受控端模塊函數(shù)幫助信息

    salt?'*'?sys.doc?service


salt-master

  • 啟動服務(wù)

    salt-master?-d

salt-key

  • 查看證書

    salt-key?-L
  • 接受指定的證書

    salt-key?-a?KeyName
  • 接受所有未認(rèn)證的證書

    salt-key?-A
  • 刪除所有證書

    salt-key?-D
  • 刪除指定的證書

    salt-key?-d?KeyName

salt-cp

*批量復(fù)制文件到受控主機(jī)

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

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

salt-run

salt-run 是用于管理虛擬機(jī)的命令

  • 查詢虛擬機(jī)信息

    salt-run?virt.hyper_info


  • 查詢虛擬機(jī)信息

    salt-run?virt.query


  • 基于云鏡像創(chuàng)建一個新的虛擬機(jī)

    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


  • 測試執(zhí)行命令

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


salt-syndic

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

salt-minion

啟動服務(wù)

salt-minion?-d


salt-call

內(nèi)置模塊列表

  • 內(nèi)置的狀態(tài)模塊的完整列表: http://docs.saltstack.com/ref/states/all/index.html

  • 內(nèi)置的執(zhí)行模塊的完整列表: http://docs.saltstack.com/ref/modules/all/index.html

參考文檔

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

  • http://blog.halfss.com/blog/2013/06/15/saltxiang-guan-shi-yong/

  • http://www.ituring.com.cn/article/42398

唧唧歪歪

  • saltstack 可能由于比較新的緣故,版本之間支持的模塊差異較大,建議最好主控端,受控端使用相同版本的軟件包,比如ssh_auth模塊從0.17.2版本才開始出現(xiàn)。

問題:

  • 證書管理 ssh_auth salt 模塊.優(yōu)先處理 (已完成)

  • 配置倉庫,符號鏈接 (已完成)

  • salt配置倉庫能否托管目錄? (已完成)

  • 一臺機(jī)器是否屬于多個組? (已完成)

  • salt 配置倉庫 致命錯誤情況能否回滾? (已完成)

  • 是否支持,配置模板 (已完成)

  • 怎么支持自定義的模塊 (部分)

  • 如何輸出給程序解析結(jié)果? (已完成)

  • 如何針對 特例機(jī)器進(jìn)行定義配置?

  • 是否支持 lsattr 如何保證重要配置文件不輕易被更改

  • 主機(jī)列表管理功能, 查詢當(dāng)前主機(jī)列表的托管狀態(tài)

  • 自動計劃任務(wù)以及,以及遠(yuǎn)程執(zhí)行結(jié)果跟蹤分析,

  • 細(xì)粒度的主機(jī)權(quán)限認(rèn)證控制,(LDAP)

  • salt-call

建議:

  • 主機(jī)命名分組避免使用正則表達(dá)式

FAQ:

  • A: Salt配置倉庫托管的配置文件是否支持符號鏈接?

  • Q: Salt配置倉庫支持文件符號鏈接。

  • A: salt 配置倉庫中配置項存在致命錯誤情況能否回滾?

  • Q: 主要保證受控端主機(jī)網(wǎng)絡(luò)通暢,配置倉庫結(jié)合svn版本控制工具,就可以實現(xiàn)回滾功能。

  • A: salt 是否支持測試執(zhí)行?

  • Q: Salt支持執(zhí)行測試,需要做的僅僅是將Test設(shè)置為True

    salt?'minion1.example.com'?state.highstate?-v?test=True
  • A: salt 是否支持配置模板?

  • Q: Salt默認(rèn)使用yaml_jinja渲染器,還支持其他渲染器,包括:yaml_mako,使用Mako模板引擎;yaml_wempy,使用Wempy模板引擎;py,直接使用Python寫SLS文件;pydsl,建立在Python語法基礎(chǔ)上的描述語言。

  • A: 如何輸出給程序解析結(jié)果?

  • Q: salt 可以將執(zhí)行結(jié)果是輸出為json格式,yaml等格式,見salt PDF文檔 756 頁!例如:

    salt?'*'?test.ping?--out?json state.show_highstate?--out?yaml state.show_sls?edit.vim?--out?pprint


轉(zhuǎn)載于:https://blog.51cto.com/lingjing/1653176

總結(jié)

以上是生活随笔為你收集整理的saltstack的基础入门文档的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。