一、通过远程命令来管理minion
1、 sal远程执行命令由五部分组成
第一部分:salt命令本身
第二部分:命令行选项
第三部分:目标定位字符串
第四部分:salt模块函数
第五部分:远程执行函数
如下示例:
$ sudo salt –summary “*” cmd.run “uptime”
2、 全局匹配,用“*”表示
# “*”表示所有主机
$ sudo salt “*” test.ping
3、 显示进程总数
$ sudo salt ‘*’ cmd.run_all ‘ps -aux| wc -l’
4、 安装包管理
1) 显示安装包
$ sudo salt 'node1' pkg.install 'httpd'
2) 显示安装包版本
$ sudo salt 'node1' pkg.version 'httpd'
3) 远程查看httpd 进程
$ sudo salt 'node1' cmd.run 'ps -aux|grep ssh|grep -v grep'
5、 文件模块管理
1) 文件信息查询
$ sudo salt 'node1' file.stats /etc/hosts
2) 修改目录属主与组
$ sudo salt 'node1' file.chown /home/jeff/test root root
6、 用户管理模块
添加用户格式:salt '*' user.add name <uid><gid><groups><home><shell>
1) 添加用户
$ sudo salt 'node1' user.add 'test'
2) 删除用户
$ sudo salt 'node1' user.delete 'test'
3) 查看用户信息
$ sudo salt 'node1' user.info root
二、分组管理
1、修改/etc/salt/master
$ sudo vim /etc/salt/master
【vim /etc/salt/master】
nodegroups:
# group1: 'L@foo.domain.com,bar.domain.com,baz.domain.com and bl*.domain.com'
# group2: 'G@os:Debian and foo.domain.com'
# 以下两行是我自定义的组
group1: 'L@node1,node2'
group2: 'L@node3,node4'
2、重启服务
$ sudo systemctl restart salt-master
3、测试连接
$ sudo salt -N group1 test.ping
三、通过state定义主机状态
1、 撰写第一条状态:创建apache.sls
#创建salt目录
$ sudo mkdir -p /srv/salt
$ sudo vim /srv/salt/apache.sls
【/srv/salt/apache.sls】
install_httpd:
pkg.installed:
- name: httpd
2、 安装httpd
$ sudo salt '*' state.sls apache
四、状态配置文件的各个要素
1、 规则一:缩进
YAML使用了一个固定的缩进风格来表示数据库层结构关系。Salt中的每个级别间缩进两个空格,而且不能使用tab键,例如:
install_httpd:
pkg.installed:
- name: httpd
2、 规则二:冒号
Python的字典理所当然是简单的键值对。
3、 规则三:短横杠
#用一个短横杠+一个空格来表示列表项,多个项目使用同样的缩进级别,比如:
- list_value_one
- list_value_two
- list_value_three
4、 用require来定义状态执行的优先级(先安装httpd才能开启服务)
install_httpd:
pkg.installed:
- name: httpd
httpd_running:
service.running:
- name: httpd
- enable: True
- require:
- pkg: install_httpd
五、通过state部署LAMP环境
1、创建lamp.sls文件
$ sudo vim /srv/salt/lamp.sls
-------------------------------------------------->
【srv/salt/lamp.sls】
install_httpd:
pkg.installed:
- name: httpd
httpd_running:
service.runing:
- name: httpd
- enable: True
- require:
- pkg: install_httpd
- watch:
- file: httpd_conf
- file: php_conf
httpd_conf:
file.managed:
- name: /etc/httpd/conf/httpd.conf
- source: salt://httpd.conf
install_php:
pkg.installed:
- name: php_all
- pkgs:
- pcre
- gcc-c++
- zlib
- zlib-devel
- php
- php-mysql
- php-common
- php-gd
- php-mbstring
- php-mcrypt
- php-devel
- php-xml
- require:
- pkg: install_httpd
php_conf:
file.managed:
- name: /var/www/html/index.php
- source: salt://index.php
- user: root
- group: root
- mode: 755
install_mariadb:
pkg.installed:
- name: mariadb
- pkgs:
- mariadb
- mariadb-server
mysql_running:
service.running:
- name: mariadb
- enable: True
httpd_running:
service.restart:
- name: httpd
2、将事先准备好的index.php和httpd.conf复制到 /srv/salt 目录下
$ sudo cp index.php httpd.conf /srv/salt/
3、运行lamp.sls
$ sudo salt '*' state.sls lamp