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实战的主要内容,如果未能解决你的问题,请参考以下文章

SaltStack实战之远程执行-Targeting

图书┃SaltStack技术入门与实战(内附书单)

  Saltstack实战

SaltStack实战

Saltstack_实战指南01_系统规划

SaltStack实战