saltstack实战
一、通过远程命令来管理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