安装saltstack
配置yum源
curl https://mirrors.aliyun.com/repo/Centos-vault-8.5.2111.repo >Centos-vault-8.5.2111.repo |
安装salt
#master |
minion节点创建配置文件
minion_ip=$(hostname -I | awk '{print $1}') |
xxxxxxxxxx calicoctl node statusshell
#master |
配置saltstack
查看来自客户端的key
$ salt-key -L |
接受来自rke01的key
$ salt-key -a rke01 |
测试访问客户端
$ salt 'rke01' test.ping |
执行shell命令
salt rke01 cmd.run ls /root |
删除节点
salt-key -d rke01 |
如果minion和master认证失败使用以下命令清理环境并重启服务
#minion |
组管理
编辑/etc/salt/master配置文件,添加k8s主机组
nodegroups: |
测试访问定义的k8s主机组
$ salt -N k8s test.ping |
状态管理
关键字 | 描述 |
---|---|
State | /srv/salt目录的文件用来定义salt state,处理需要执行的任务。比如有一个common目录,salt默认加载common/common.sls,如果该文件不存在才回去找init.sls文件。 |
include | 加载文件,比如:include: deploy |
require | 表示state会等待列表中定义的每一项state执行成功之后才会执行 |
watch | 当配置文件发生变更时执行任务,比如复制配置文件,如果配置文件发生变化执行重启服务任务 |
onchanges | 只有当state成功完成并且有变化发生时,关联到onchanges的任务才会执行。 |
onfail | 当state运行失败时关联的任务才会执行。 |
prereq | 只有关联的任务发生变化才会运行 |
项目目录结构
/srv/ |
入口文件top.sls定义内容
base: |
/srv/salt/roles/common/tasks/init.sls引入其他文件
include: |
/srv/salt/common/tasks/deploy.sls文件编写具体任务
debug_test_message: |
运行salt状态文件
salt "*" state.apply |
自定义变量
Grain和Pillar提供了一种允许在Minion中使用用户自定义变量的方案。Grain定义在指定的Minion上,而Pillar则定,义在Master上。它们都可以通过静态(statically)或动态(dynamically)的方式进行定义。但是Grain常用于提供不常修改的数据,至少是不重启Minion就不,会变,而Pillar更倾向于动态数据。
Grain
获取minion所有属性
salt "*" grains.items |
获取节点操作系统属性
salt "*" grains.get lsb_distrib_codename |
为minion添加或修改属性
salt "*" grains.setval hostname salt-minion |
设置minion操作系统类型
salt "*" grains.setval os_family RedHat |
pillar
pillar跟state一样,pillar根目录为/srv/pillar,根目录下创建top.sls
base: |
/srv/pillar/common/init.sls定义要配置的变量
role: common |
如果pillar文件有变动需要先同步到minion
salt "*" saltutil.refresh_pillar |
获取自定义的pillar所有变量
salt "*" pillar.get role |
模板动态渲染
获取pillar role变量
debug_pillar_msg: |
如果要获取一个不存在的变量可以为其设置一个默认值括号内第一个元素为变量名称,第二个元素为变量默认值
debug_pillar_version: |
使用代码块获取变量
{% set version = 'v10.10.10' %} |
模块
查看所有模块
salt "*" sys.list_modules |
查看cmd模块的所有function
salt "*" sys.list_functions cmd |
查看cmd模块的用法
salt "*" sys.doc cmd |
查看系统信息
salt "*" grains.items |
获取指定的信息
salt "*" grains.get cpu_model |