【Python项目】CMDB的搭建11(SaltStack配置小结1/2)

saltstack配置管理

Saltstack状态模块

远程执行模块的执行是过程式,而状态是对minion的一种描述和定义,管理人员不需要关心部署任务如何完成的,只需要描述minion的状态描述。
它的核心是写sls(Salt State file)文件,sls文件默认格式为YAML格式,并默认使用jinja模板,jinja是根据django的模板语言发展而来的语言,简单并强大,支持for if等循环语句。salt state主要用来描述系统,服务,配置文件的状态,常常被称为配置管理。

mysql-install:   #ID声明,必须唯一
  pkg.installed:   #state状态声明
    - pkgs:   #选项声明
      - mariadb:   #选项列表
      - mariadb-server

说明:
一个ID只能出现一次
一个ID下相同模块只能使用一次
一个ID下不可以使用多个不同模块
一、模块帮助手册
#列出所有状态模块
[root@salt-master ~]# salt '*' sys.list_modules
#查看指定模块的所有方法
[root@salt-master ~]# salt '*' sys.list_state_functions pkg
#查看指定模块的使用方法
[root@salt-master ~]# salt '*' sys.state_doc pkg
#查看指定模块的指定方法的用法
[root@salt-master ~]# salt '*' sys.state_doc pkg.installed

二、pkg软件模块

pkg.installed 软件安装      模块--》方法--》参数

php-install:
  pkg.installed:
    - pkgs:
      - php
      - php-mysql: ">=5.4.16"    #指定安装版本
      - php-pdo
      - php-cli

指定安装最新版本的软件

php-install:
  pkg.latest:
    - pkgs:
      - php
      - php-mysql
      - php-pdo
      - php-cli

三、file文件模块

(1)file.managed 下发文件,确保文件存在

[root@salt-master ~]# mkdir /srv/salt/base/files
[root@salt-master ~]# cp /etc/httpd/conf/httpd.conf /srv/salt/base/files/
[root@salt-master ~]# cat /srv/salt/base/apache_conf.sls
apache-config:
  file.managed:
    - name: /etc/httpd/conf/httpd.conf
    - source: salt://files/httpd.conf
    - user: root
    - group: root
    - mode: 644

说明:
- name: 表示存放在minion端的目的地址
- source: 表示这个文件来自哪里(说明这个文件得提前准备)

或者这样写,直接已目的地址命令ID,这样ID也表示目的地址
[root@salt-master ~]# cat /srv/salt/base/apache_conf.sls
/etc/httpd/conf/httpd.conf:
  file.managed:
    - source: salt://files/httpd.conf
    - user: root
    - group: root
    - mode: 644
小示例:
[root@salt-master ~]# cat /srv/salt/base/test.sls
/tmp/passwd_back:
  file.managed:
    - source: salt://files/passwd
    - user: root
    - group: root
    - mode: 644
[root@salt-master ~]# cp /etc/passwd /srv/salt/base/files/
[root@salt-master ~]# salt '*' state.sls test   #test是sls的文件名称,后缀不需要
[root@salt-master ~]# salt '*' cmd.run "ls -l /tmp/passwd_back"
salt-minion03:
    -rw-r--r-- 1 root root 2098 May 15 16:21 /tmp/passwd_back
salt-minion02:
    -rw-r--r-- 1 root root 2098 May 15 16:21 /tmp/passwd_back
salt-minion01:
    -rw-r--r-- 1 root root 2098 May 15 16:21 /tmp/passwd_back

(2)file.directory 建立目录

[root@salt-master ~]# cat /srv/salt/base/directory.sls
/tmp/saltdir:
  file.directory:
    - user: root
    - group: root
    - mode: 755
    - makedirs: True   #如果上一级目录不存在自动创建;类似(mkdir -p)

[root@salt-master ~]# salt '*' state.sls directory
[root@salt-master ~]# salt '*' cmd.run "ls -d /tmp/saltdir"
salt-minion03:
    /tmp/saltdir
salt-minion02:
    /tmp/saltdir
salt-minion01:
    /tmp/saltdir

(3)file.recurse 下发整个目录

[root@salt-master ~]# cat /srv/salt/base/httpd_conf_dir.sls
httpd_conf_dir:
  file.recurse:
    - name: /etc/httpd/conf.d
    - source: salt://files/conf.d
    - file_mode: 600    #文件权限
    - dir_mode: 755    #目录权限
    - include_empty: True   #同步空目录
    - clean: True    #使用后minion与master保持一致

(4)file.symlink 建立软链接

[root@salt-master ~]# cat /srv/salt/base/target_link.sls
/etc/grub.cfg:
  file.symlink:
    - target: /etc/grub2.cfg

[root@salt-master ~]# salt '*' state.sls target_link
[root@salt-master ~]# salt '*' cmd.run "ls -l /etc/grub.cfg"
salt-minion03:
    lrwxrwxrwx 1 root root 14 May 15 16:42 /etc/grub.cfg -> /etc/grub2.cfg
salt-minion01:
    lrwxrwxrwx 1 root root 14 May 15 16:42 /etc/grub.cfg -> /etc/grub2.cfg
salt-minion02:
    lrwxrwxrwx 1 root root 14 May 15 16:42 /etc/grub.cfg -> /etc/grub2.cfg

四、service服务模块

[root@salt-master ~]# cat /srv/salt/base/service_httpd.sls
httpd:
  service.running:
    - name: httpd   #服务名称
    - enable: True    #开机自启动
    - reload: True    #允许重载配置文件,不写则是restart

或者这样写
[root@salt-master ~]# cat /srv/salt/base/service_httpd.sls
httpd:   #即表示ID,又表示服务名
  service.running:
    - enable: True
    - reload: True

五、高级状态模块

当我们想要不同的主机应用不同的配置,那么可以使用高级状态管理 top file来进行管理。可以通过正则,grain模块,或分组名,来进行匹配,再下一级是要执行的state文件

可以将我们的配置需求转换为YAML并在Top file文件中表示:

Top file示例

base:  # Apply SLS files from the directory root for the 'base' environment
  '*':   #通过正则去匹配所有minion
    - app.nginx   # Under the app directory , Apply the state file named 'nginx.sls'

  'web*':   # All minions with a minion_id that begins with 'web'
    - match: nodegroup   #匹配方式
    - app.cron

  'os:centos':  #通过grains模块匹配
    - match: grains
    - nginx

Top file 高级状态的执行

[root@salt-master ~]# salt '*' state.highstate

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Mr. Sun_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值