saltstack实战
Posted jeff
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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
以上是关于saltstack实战的主要内容,如果未能解决你的问题,请参考以下文章