第十话 SaltStack 项目实战

一、salt-master(参考 10.20.1.57 或 10.20.1.52)

1、首先Salt-Master 使用 saltstack repo 进行安装

将以下文件保存到 /etc/yum.repos.d/saltstack.repo 中:

# 10.20.1.57、10.20.1.52

[saltstack-repo]
name=SaltStack repo for Red Hat Enterprise Linux $releasever
file=/etc/yum.repos.d/saltstack.repo
gpgcheck=0
key_url=http://saltstack.pkg.lehe.com/redhat/$releasever/$basearch/latest/SALTSTACK-GPG-KEY.pub
enabled=1
baseurl=http://saltstack.pkg.lehe.com/redhat/$releasever/$basearch/latest

 

2、然后安装 Salt-Master、Salt-Api、Salt-SSH 三个模块

yum install -y salt-master salt-ssh salt-api

3、配置

安装完成后配置 ext_pillar 和 master_tops 使用 Foreman

 655 ext_pillar:
 656   - foreman_salt: /etc/salt/foreman.yaml
  
 411 master_tops:
 412   - foreman_salt: /etc/salt/foreman.yaml

假设 foreman 的 salt-proxy 插件部署在 /home/service/salt-foreman 目录

64 module_dirs:
65   - /home/service/salt-foreman

配置 modules 目录、ext_pillar 和 master_tops

64 module_dirs:
65   - /home/service/salt-foreman

配置其它的 salt-maste r相关的配置

autosign_file 对应自动签名配置(针对某些host自动通过minion的key)

publisher_acl 对应是否支持非root账户在master本机访问时的acl限制

external_auth 对应salt-api的访问鉴权限制(这里配置对于foreman用户访问不进行任何鉴权)

hash_type 对应文件的hash值(这里用sha1,其实用md5也没事,很难碰撞的)

284 autosign_file: /etc/salt/autosign.conf
  
304   work:
305     - .*
  
340 external_auth:
341   auto:
342     foreman:
343       - '@runner'
  
518 hash_type: sha256

4、Salt-Api

配置 /etc/salt/master.d/saltweb.conf

我们使用 cherrypy 的 server 来提供 salt-api 的服务(其实可以使用 tornado 的 server 的,搞明白了之后再用)

监听本机 lo 地址,并且关闭 ssl

rest_cherrypy:
  port: 9191
  disable_ssl: True 

5、Salt-SSH

6、启动对应的服务

# salt-master
# /etc/init.d/salt-master start          # Version6
或
# service salt-master start              # Version6
  
# systemctl start salt-master.service    # Version7
  
# salt-api
# /etc/init.d/salt-api start          # Version6
或
# service salt-api start              # Version6
  
# systemctl start salt-api.service    # Version7

 

二、salt-minion

1、考虑到Salt官方提供了Salt的标准安装包,我们直接使用saltstack的repo进行安装,安装的功能卸载了salt-minion-install的sls文件中,内容如下:

# /srv/salt/salt-minion-install.sls
salt-minion-install:
  pkgrepo.managed:
    - name: saltstack-repo
    - file: /etc/yum.repos.d/saltstack.repo
    - humanname: SaltStack repo for Red Hat Enterprise Linux $releasever
    - baseurl: http://saltstack.pkg.lehe.com/redhat/$releasever/$basearch/latest
    - gpgcheck: 0
    - key_url: http://saltstack.pkg.lehe.com/redhat/$releasever/$basearch/latest/SALTSTACK-GPG-KEY.pub
  pkg.latest:
    - pkgs:
      - salt-minion
    - fromrepo: saltstack-repo
    - require:
      - pkgrepo: saltstack-repo
    - order: 1
  {% if grains['osmajorrelease'] == 7  %}
  cmd.wait:
    - name: systemctl enable salt-minion
    - require:
      - pkg: salt-minion
  {% elif grains['osmajorrelease'] <= 6 %}
  cmd.wait
    - name: chkconfig salt-minion on
    - require:
      - pkg: salt-minion
  {% endif %}
 
include:
  - salt-minion

即将以下文件保存到 /etc/yum.repos.d/saltstack.repo 中

[saltstack-repo]
name=SaltStack repo for Red Hat Enterprise Linux $releasever
file=/etc/yum.repos.d/saltstack.repo
gpgcheck=0
key_url=http://saltstack.pkg.higo.cloud/redhat/$releasever/$basearch/latest/SALTSTACK-GPG-KEY.pub
enabled=1
baseurl=http://saltstack.pkg.higo.cloud/redhat/$releasever/$basearch/latest

2、salt-minion.sls 中撰写了对应功能从 master 中拉取 minion 的配置文件并且自动 reload minion 的功能,内容如下:

salt-minion-config:                                                     # 标签定义
  file.managed:                                                         # 定义一个方法,在这里方法为:下发文件,确保文件存在
    - name: /etc/salt/minion                                            # file.managed 函数参数,下发文件绝对路径
    - user: root                                                        # 表示文件属主
    - group: root                                                       # 表示文件属组
    - mode: 600                                                         # 表示文件权限
    - source: salt://files/minion                                       # source 是 managed 函数的参数之一,告诉管理文件地址的相对路径
  
salt-minion-id-config:                                                  # 标签定义
  file.managed:                                                         # 定义一个方法,在这里方法为:下发文件,确保文件存在
    - name: /etc/salt/minion_id                                         # file.managed 函数参数,下发文件绝对路径
    - user: root                                                        # 表示文件属主
    - group: root                                                       # 表示文件属组
    - mode: 600                                                         # 表示文件权限
    - contents: {{ grains['fqdn_ip4'][0] }}                             # contents 是 managed 函数的参数之一,重新获取下发文件内容。grain: 按照grains规则去匹配
    - order: 2                                                          # 优先级比 require 和 watch 低,有 order 指定的 state 比没有 order 指定的优先级高
  
salt-minion:                                                            # 标签定义
  cmd.wait:                                                             # 定义一个方法:
    - name: echo service salt-minion restart | at now + 1 minutes       # 要执行的命令,记住该命令将会在 salt-minion 的路径和权限下执行。
    - watch:                                                            # 监控状态是否变化,常用在 service.running 中,在某个 state 变化时运行此模块
      - file: /etc/salt/minion                                          #
      - file: /etc/salt/minion_id                                       #
    - require:                                                          # 依赖某个 state,在运行该 state 前,先运行依赖的 state,依赖可以有多个
      - salt-minion-config                                              #
      - salt-minion-id-config                                           #
  service.running:                                                      # 定义一个方法,service 模块,启动 salt-minion
    - name: salt-minion                                                 # name 是 service.running 函数的参数,如果包名与服务名相同,则 name 这项可以省略,该实例中不用指定包,所以必须有 name 指明 running 参数是 salt-minion
    - enable: true                                                      #

3、在存在对目标机器的 ssh 访问授权情况下可以通过 salt-ssh 的命令来进行 Salt-Minion 的安装,操作方法如下:

salt-ssh -i '<target machine nodename>' state.apply salt-minion-install

 

 

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
根据提供的引用内容,SaltStack是一个用于配置管理、远程执行和基础架构自动化的开源软件。它由Salt Master和Salt Minion组成。Salt Master负责管理和控制Minion节点,而Minion节点则是受Salt Master管理的目标主机。 关于SaltStack教程,你可以通过以下几个步骤来学习和了解SaltStack的使用: 1. 首先,了解SaltStack的基本概念和架构。Salt Master是控制中心,负责配置管理和指导Minion节点,而Minion节点是受控制的目标主机。 2. 其次,学习如何安装和配置SaltStack。你可以通过查看安装过程中安装了哪些文件来了解Salt Master和Minion节点的组成。 3. 熟悉SaltStack的核心操作命令。例如,salt命令用于执行命令和模块,salt-key命令用于管理证书,salt-cp命令用于文件传输等。可以使用salt --version命令来查看SaltStack的版本信息。 4. 掌握SaltStack的配置文件。在/etc/salt/master文件中,你可以配置Salt Master的各种参数和选项。 5. 学习如何使用SaltStack进行远程执行和配置管理。你可以通过salt命令来远程执行命令和模块,并使用Salt Master的配置文件来管理Minion节点的配置。 6. 进一步探索SaltStack的功能和高级特性。SaltStack还提供了许多高级功能,如状态管理、事件系统和扩展模块等,可以根据需要进一步学习和实践。 希望以上信息对你有帮助!如果你有任何其他问题,请随时提问。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值