動作モードをsaltstack:
地元
マスター/手先
塩のssh
3つの機能をsaltstack
リモートコマンドの実行
構成管理(状態管理)
クラウド管理
インストール:
マスター塩マスター
エージェント塩、手先
塩-keyコマンド
受け入れキー:キーを受け入れます
拒否されたキー:拒否されたキー
未承認キー:キーが受け付けられません
拒否されたキー:拒否されたキー
minion_idエージェントの保存パス:の/ etc /塩/ minion_id
すべて受け入れる:塩キー-A -y
表示結果:塩キー-L
単一のコマンドを実行するための塩
ホストのコマンドモジュールは、塩を実行します
塩「*」すべてのホストにpingをtest.ping。
cmd.run「ホスト名」を実行します
state.highstateマスター同期ステータス
state.highstateテスト= Trueの同期テスト文法の前に
-Eは、定期的に使用することができますホスト上で実行されます。
リストを実行するように指定-L
塩-L 'minion1、minion2' com.run 'ホスト名'
-Sが指定されたサブネット
-S '192.168.1.0/24'
構成管理
1、環境の定義
の/ etc /塩/マスター
file_roots :
ベース:2つのスペースの基本的な環境
- / SRV /塩/ 4空間
DEV:開発環境
- / SRV /塩は/ dev /サービス
- / SRV /塩は/ dev /状態
PROD:本番環境
- / SRV /塩/ PROD /サービス
- / SRV /塩/ PROD /状態
図2に示すように、入口が定義されています
すべての塩プロファイルはSLSの終わりに基づいています。
パス:/ SRV /塩/
vimのtop.sls
戻る例の定義:
ベース:
'*':
- apacheの
アプリケーションコンテンツの例:
apacheの-PKG:
pkg.installed:
- 名前:
- httpdの
- のmod_ssl
apacheのサービス:
service.running:
- 名前:httpdの
- 有効:真
データシステム穀物
最後の手先に格納されているすべてのシステム情報手先の開始時刻を集めた穀物。
塩「ホスト」は、すべての粒子の情報をgrains.ls
バリューgrains.item OSのOSの
osreleaseシステムのバージョン
例:
塩-G 'osrelease:1611年3月7日' test.ping
カスタム穀物
方法
の/ etc /塩/手先
#穀物:
# 役割:
# - Webサーバ
# - memcacheの
# 展開:datacenter4
# キャビネット:13
# cab_u:14-15
柱データシステムズ
端子に供給されるマスタ端末セット、手先。
pillar在saltstack中主要作用是存储和定义配置管理中需要的一些数据,比如软件版本好,用户名密码信息,它的存储格式跟Grains类似,都是yaml格式;
/etc/salt/master
#pillar_roots:
# base:
# - /srv/pillar
#
#ext_pillar:
# - hiera: /etc/hiera.yaml
# - cmd_yaml: cat /etc/salt/yaml
定义pillar的入口
vim /srv/pillar/top.sls
base:
"*":
- packages
- services
- command
- isp
刷新pillar
salt '*' saltutil.refresh_pillar
master端验证
salt -I 'roles:ftpserver' cmd.run 'uptime'
远程执行Targeting
与minion_id相关
Globbing(通配符)
* ? []都支持;
Regex(正则)
List(列表)
与Minion_id无关:
Subnet/IP (子网)
Grains
Pillar
Compound matchers(复合匹配)
-C 指定
salt -C 'I@roles:deserver and I@deployment:datacenter4' test.ping
Node Groups(节点组)
-N 指定
当在sls文件中使用正则时:
base:
'slatstack0[^23].test.com':
- match: pcre #必须引入salt的pcre库;
- apache
当在ssl文件中使用Grains时:
base:
'os:CentOS':
- match: grain #引入grain库
- apache
salt modules
https://docs.saltstack.com/en/latest/
salt '*' sys.list_modules 列出所有模块
salt '*' sys.list_functions grains 列出grains模块的用法
sys.doc grains 查看grains帮助
sys.doc grains.item 查看item帮助
sys.doc pkg
service.available 服务是否可用
.missing 包是否缺失
state.show_top 应用了哪些模块
state.show_highstate 更详细的状态
state.sls httpd 只同步某一个任务
salt 'test04' state.sls apache env=base 将base环境中的apache环境应用给test04主机;
salt远程执行returners
return组件可以理解为saltstack系统对执行minion返回后的数据存储和返回给其他程序;支持多种存储方式,例如mysql;mongodb;memcache等;通过return可以对saltstack每次的操作进行记录,对以后的日志审计提供数据;
mysql_secure_installation 设置mysql密码;
配置管理states
states是saltstack系统的配置语言,在日常韵味中需要编写大量的states文件,例如创建用户,安装软件包,管理相应配置文件;则需要编写一些states sls文件,即状态配置文件去描述和实现相应的功能;states sls 主要使用yaml语言;也可以支持使用python语言;
配置管理状态关系
unless 主要用于cmd状态模块,仅当unless选项指向的命令;
返回false时才执行name指向的命令,test -d /usr/local/nginx
require 我依赖某个状态,我依赖谁
示例:
lamp-pkg-install:
pkg.installed:
- names:
- httpd
- php
-php-mysql
httpd-files:
file.managed:
- name: /etc/httpd/conf/httpd.conf
- source: salt://files/httpd.conf
- require:
- pkg: lamp-pkg-install
httpd-service:
server.running:
- name : httpd
- enable: True
- reload: True (如果不写则是restart)
- require:
- file: httpd-files
- watch:
- file: httpd-files 只要配置文件发生改变即reload服务
require_in 我被某个状态依赖 谁依赖我
watch 我关注某个状态,当状态发生改变,则restart
watch_in 我被某个状态关注;
配置管理jinja模版
{{ 变量 }}与变量列表defaults必须一一对应;
vim httpd.conf
Listen {{ IP }}:{{ PORT }}
httpd-files:
file.managed:
- name: /etc/httpd/conf/httpd.conf
- source: salt://files/httpd.conf
- template: jinja #必须要告诉它是jinja模版
- require:
- pkg: lamp-pkg-install
- defaults:
IP: {{ grains['fqdn_ip4'][0] }}
PORT: 7777