saltstack 1. 安装使用及组件介绍


saltstack的四大功能:

​ 远程执行,配置管理,云管理,事件驱动

saltstack组件:

  • salt-master

  • salt-minion

  • 执行模块

  • 状态

  • Grains

  • Pillar

  • 等等等等

saltstack 安装
安装saltstack

安装repo源,在https://repo.saltstack.com/yum/选择合适的repo源,进行安装。

yum install https://repo.saltstack.com/yum/redhat/salt-repo-latest-2.el7.noarch.rpm 
# 固定版本
# yum install https://repo.saltstack.com/yum/redhat/salt-repo-2018.3-1.el7.noarch.rpm 

注:在安装repo源时需要注意,尽量使用固定版本的repo源,防止以后在执行yum update时升级后的不可用问题。

安装对应组件

yum install salt-master
yum install salt-minion
yum install salt-ssh
yum install salt-syndic
yum install salt-cloud
yum install salt-api
简单配置saltstack
  • salt-master

salt-master无需配置可以直接启动使用。

  • salt-minion

salt-minion需要配置master字段来让minion去连接salt-master,该字段可以配置为IP和域名。

可以配置id字段来设置minion的标示ID,否则默认使用socket.getfqdn()获取的值来设定,并保存到/etc/salt/minion_id命名的文件中。

启动服务后,master和minion都会在/etc/salt/pki目录中对应服务的文件夹下生成一对秘钥文件,

端口监听

salt-master监听4506和4506端口,使用Zeromq和salt-minion进行通信,master通过4505端口异步发送任务到minion端。

salt-minion不监听端口,minion和master在4505上建立长连接,接受master下发的任务。任务执行完成后,结果发送到salt-master的4506端口。

YAML
缩进

YAML使用固定缩进方案来表示数据层之间的关系。Salt要求每个级别的缩进恰好包含两个空格。不要使用tab。

冒号

Python字典只是键值对。字典键在YAML中表示为由尾部冒号终止的字符串。值由冒号后面的字符串表示,用空格分隔

my_key:my_value
# 在python中格式如下
# {'my_key': 'my_value'}
# 或者,可以通过缩进将值与键相关联。
my_key:
  my_value

字典可以嵌套:

first_level_dict_key:
  second_level_dict_key: value_in_second_level_dict
# 在python中格式如下
# {
#     'first_level_dict_key': {
#         'second_level_dict_key': 'value_in_second_level_dict'
#     }
# }
破折号

为了表示项目列表,使用单个短划线后跟空格。多个项目是同一列表的一部分,因为它们具有相同级别的缩进。

- list_value_one
- list_value_two
- list_value_three
# 列表可以是键值对的值。这在盐中很常见:
my_dictionary:
  - list_value_one
  - list_value_two
  - list_value_three
# 在python中格式如下
# {'my_dictionary': ['list_value_one', 'list_value_two', 'list_value_three']}
使用
认证

首次使用需要在master上对minion进行认证后才能对minion进行操作。使用salt-key命令对minion端进行认证操作。

salt-key
	-A: 认证全部
	-a: 支持通配符认证
	-D: 拒绝所有认证
	-d: 支持通配符拒绝认证

minion会把自己的公钥发送给master,保存到master的/etc/salt/pki/master/minions_pre目录下,每个minion端的公钥文件以minion端的id命名,master认证后会移动到/etc/salt/pki/master/minions目录下,并且会把master的公钥传到minion 端的/etc/salt/pki/minion/minion_master.pub文件中。

模块
# 这里的*表示匹配minionID名,由于shell的问题,这里用了反斜杠进行转义,也可以使用单引号和双引号。
salt \* test.ping
salt '*' cmd.run 'free -m'

salt执行命令格式为:1.salt关键字。2.通配符。3.模块以及模块下的方法 4.方法需要的参数

state.sls

可以编写state.sls文件对服务器进行配置管理。

首先,需要编辑master配置文件来制定salt的文件目录,如下:

# 这里不同的环境对应不同的目录
file_roots:
  base:
    - /srv/salt/base
  dev:
    - /srv/salt/dev
  prod:
    - /srv/salt/prod
  test:
    - /srv/salt/test

然后,在base目录下创建按照apache服务的state.sls脚本,如下:

mkdir -p /srv/salt/{base,dev,prod,test}
mkdir /srv/salt/base/web
cat /srv/salt/base/web/apache.sls
apache-install:
  pkg.installed:
    - name: httpd
apapche-service:
  service.running:
    - name: httpd
    - enable: True

最后,执行进行安装:

# 默认环境为bash
salt 'minion' state.sls web.apache saltenv=base
# 测试命令
salt 'minion' state.sls web.apache test=True
top.sls

top.sls本不是固定的,可以在master的配置文件中进行state_top: top.sls配置,建议不要修改。

top.sls来指定不同minion执行不同的脚本:

# 这里表示所有服务安装apache服务
[root@controller base]# cat /srv/salt/base/top.sls
base:
  '*':
    - web.apache

/srv/salt/base/web/apache.sls文件内容如下:

[root@controller base]# cat web/apache.sls
apache-install:
  pkg.installed:
    - name: httpd

apapche-service:
  service.running:
    - name: httpd
    - enable: True

执行,

# 这里的* 和top.sls里的*是两个概念
salt '*' state.highstate
数据系统
Grains

grains用于收集操作系统,域名,IP地址,内核,操作系统类型,内存和许多其他系统属性。它是保存到minion端的静态数据,master端获取数据时采用明文传输。

  1. 存放着salt-minion启动时收集的信息。
salt \* grains.items
salt \* grains.item virtual
salt \* grains.ls
salt \* grains.get saltversion
salt \* grains.get ip_interfaces:eth0
  1. salt可以根据Grains来匹配minion:
[root@controller base]# salt -G 'os:CentOS' test.ping
salt-master:
    True
salt-minion:
    True
[root@controller base]# salt \* grains.get os
salt-master:
    CentOS
salt-minion:
    CentOS
  1. top.sls中可以使用根据grains进行匹配
[root@controller base]# cat /srv/salt/base/top.sls
base:
  'os:CentOS':
    - match: grain
    - web.apache
  1. 在模版语言中使用grains

  2. 自定义grains

    • 在minion的配置中修改grains选项来定义。(不推荐,需要单独修改minion的配置文件)

    • 在minion端的/etc/salt/grains文件中单独配置,配置后需要重启或者使用salt \* saltutil.sync_grains命令刷新grains才能生效

    • 在master端file_root指定的子目录中创建_grains的自定义grains模块目录,将在state.highstate运行时或altutil.sync_grainssaltutil.sync_all功能分发给minion端。该文件的文件名以及函数名无关紧要,根本不会影响谷物数据; 只有返回的键/值成为grains的一部分。

      mkdir /srv/salt/base/_grains
      cat /srv/salt/base/_grains/zabbit.py
      def yourfunction():
          grains = {}
          grains['yourcustomgrain'] = True
          grains['anothergrain'] = 'somevalue'
          import time
          grains['time'] = time.time()
          return grains
      # python脚本中可以定义静态配置以及python获取到的配置,但是需要注意的是动态获取的时间只有minion重启或者刷新grains才会生效。
      

  3. grains的缺点:

    • 静态的数据。
    • 明文传输,敏感数据不安全。
Pillar

保存在master端数据,一般放一些敏感的数据,采用加密方式传输。

salt-master服务器维护一个pillar_rootsfile_roots文件结构类似的设置,该pillar_roots选项将环境映射到目录。然后根据顶部文件中的匹配器将支柱数据映射到minions,该顶部文件以与状态顶部文件相同的方式布局。pillar可以使用与标准顶级文件相同的匹配器类型。

配合master配置文件/etc/salt/masterpillar_roots选项

pillar_roots:
  base:
    - /srv/pillar/base
  prod:
    - /srv/pillar/prod
mkdir -p /srv/pillar/{base,prod}
systemctl restart salt-master

新建pillar的top.sls文件

声明在base环境中,匹配所有minions的glob将在柱子中找到支柱数据packages 。假设 从上面取的pillar_roots/srv/pillarpackages柱子将位于/srv/pillar/base/apache.sls

cd /srv/pillar/base
[root@controller base]# cat top.sls
base:
  '*':
    - apache

结合grains可以只对CentOS系统进行pillar参数进行设置

base:
  'os:CentOS':
    - match: grain
    - apache

/srv/pillar/base/apache.sls文件内容如下:

[root@controller base]# cat apache.sls
{% if grains['os'] == 'CentOS' %}
apache: httpd
{% elif grains['os'] == 'Debian' %}
apache: apache2
{% endif %}

修改/srv/salt/base/web/apache.sls文件内容如下:

[root@controller base]# cat web/apache.sls
apache-install:
  pkg.installed:
    - name: {{ pillar['apache'] }}

apapche-service:
  service.running:
    - name: {{ pillar['apache'] }}
    - enable: True

继续执行

salt '*' state.highstate
Grains和Pillar
数据系统存储位置类型采集方式场景传输方式
Grainsminion静态minion启动时,可以刷新1.获取信息 2.匹配明文
Pillarmaster动态指定,实时生效1.匹配 2.敏感数据配置密文
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
提供的源码资源涵盖了Java应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 适合毕业设计、课程设计作业。这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。 所有源码均经过严格测试,可以直接运行,可以放心下载使用。有任何使用问题欢迎随时与博主沟通,第一时间进行解答!

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值