SaltStack----远程执行
- 1 远程执行shell命令
- 2 base路径和YAML语法
- 3 配置管理
- 3.1 单个sls文件的编写
- 3.2 apache的安装配置启动sls文件
- 4 编写远程执行模块
1 远程执行shell命令
(1)Salt命令由三个主要部分构成:salt '' [arguments]
-
target
: 指定哪些minion
默认使用glob匹配minion id:salt '*' test.ping使用正则表达式:salt -E 'server[2-3]' test.ping可以指定列表:salt -L 'server2,server3' test.ping
(2)将master端的文件复制到minion
salt-cp server2 index.html /var/www/html
salt server2 file.stats /var/www/html/index.html
2 base路径和YAML语法
(1) 查看master的配置文件:vim /etc/salt/master
- 默认的base目录是:
/srv/salt/
- 进入 /srv/目录发现salt子目录并不存在,创建
/srv/salt/
cd /srvmkdir salt
(2)YAML语法
SaltStack是使用的YAML语言来将sls文件解释成它自己可以识别的内容
缩进:Salt需要每个缩进级别由两个空格组成,不要使用tabs冒号:字典的keys在YAML中的表现形式是一个以冒号结尾的字符串my_key: my_value短横杠:表示列表项,使用一个短横杠加一个空格- list_value_one- list_value_two
3 配置管理
SLS表示系统将会是什么样的一种状态,而且是以一种很简单的格式来包含这些数据,常被叫做配置管理。
sls文件命名:
sls文件以”.sls”后缀结尾,但在调用是不用写此后缀。使用子目录来做组织是个很好的选择init.sls 在一个子目录里面表示引导文件,也就表示子目录本身, 所以``apache/init.sls`` 就是表示``apache``.如果同时存在apache.sls 和 apache/init.sls,则 apache/init.sls 被忽略,apache.sls将被用来表示 apache.
3.1 单个sls文件的编写
(1) 安装软件
cd /srv/salt/
mkdir appache
vim install.sls
httpd: pkg.installed
apache:pkg.installed:- name: httpd
apache:pkg.installed: - pkgs:- httpd- php
(2) 将master端的文件复制到minion端
mkdir /srv/salt/apache/files
cp ~/index.html /srv/salt/apache/files
vim /srv/salt/apache/install.sls
/var/www/html/index.html:file.managed:- source: salt://apache/files/index.html
salt server2 sys.doc state.sls apache.install
- 执行完命令后可以看到master端的base目录将会同步到minion:
cd /var/cache/salt/
md5sum命令用于生成和校验文件的md5值。它会逐位对文件的内容进行校验。是文件的内容,与文件名无关,也就是文件内容相同,其md5值相同。md5值是一个128位的二进制数据,转换成16进制则是32(128/4)位的进制值
更改index.html文件的内容,md5的值也会改变
(3)httpd服务的启动
- 编辑sls文件:
vim /srv/salt/apache/install.sls
httpd:service.running
3.2 apache的安装配置启动sls文件
- 编辑sls文件:
vim /srv/salt/apache/install.sls
apache:pkg.installed: - pkgs:- httpd- phpfile.managed: - source: salt://apache/files/index.html- name: /var/www/html/index.htmlservice.running: - name: httpd- enable: true- watch:- file: /etc/httpd/conf/httpd.conf
/etc/httpd/conf/httpd.conf:file.managed:- source: salt://apache/files/httpd.conf
- 执行sls文件
salt server2 sys.doc state.sls apache.install
mv install.sls init.sls
salt server2 state.sls apache
salt server2 sys.doc state.sls apache
4 编写远程执行模块
shell执行远程命令:salt server2 cmd.run df
(1) 创建模块目录:mkdir /srv/salt/_modules
(2) 编写模块文件:vim /srv/salt/_modules/mydisk.py
def df():return __salt__['cmd.run']('df -h')
(3) 同步模块:salt server2 saltuil.sync_modules
,模块将会同步到minion
(4) 运行模块:salt server2 mydisk.df