Salt-ssh之批量yum部署minion(13)

本文介绍了如何利用Saltstack的salt-ssh功能在无需预装minion的情况下,批量在CentOS 6.5系统上安装和配置salt-minion。内容包括RPM安装步骤、配置/etc/salt/roster、编写state.sls文件及部署验证过程。

salt-ssh是Saltstack的另一种管理方式,无需安装minion端,可以运用Salt的一切功能,管理和使用方式和基本和Salt一样。下面以批量安装minion端为例,讲述salt-ssh的用法。

安装salt-ssh:

yum install salt-ssh -y

一、RPM安装篇

使用salt-ssh功能要求客户端系统python版本2.6+

1.salt-minion端环境:

  系统:CentOS 6.5 64bit

  python版本:2.6.6    

2.配置/etc/salt/roster

例:

10.10.10.30:
  host: 10.10.10.30
  user: syspub    #普通用户,有无密码sudo权限
  passwd: 123456aa
  sudo: True
  timeout: 15

当客户端数量较多时,手工配置/etc/salt/roster比较繁琐,这里写一个简单脚本供参考

vim ip.sh
#!/bin/bash
echo "" > /etc/salt/roster
for i in `cat /root/gg`
do
        echo "$i:" >> /etc/salt/roster
        echo "  host: $i" >> /etc/salt/roster
        echo "  user: syspub" >> /etc/salt/roster
        echo "  passwd: 123456aa" >> /etc/salt/roster
        echo "  sudo: True" >> /etc/salt/roster
        echo "  timeout: 15" >> /etc/salt/roster
done

其中/root/gg为客户端IP表,例:

10.10.10.30
10.10.10.31
10.10.10.32

执行如下命令配置/etc/salt/roster:

sh ip.sh

3.编写state.sls文件

路径:/srv/salt/minions/

目录树结构如下:

|conf
|---minion
|install.sls
|yum.repos.d          #yum源可自制本地源
|---CentOS-Base.repo      
|---epel.repo

a.编写/srv/salt/minions/install.sls

#salt_minion_install
minion_yum:
  file.recurse:
    - name: /etc/yum.repos.d
    - source: salt://minions/yum.repos.d
    - user: root
    - group: root
    - file_mode: 644
    - dir_mode: 755
    - include_empty: True
minion_install:
  pkg.installed:
    - pkgs:
      - salt-minion
    - require:
      - file: minion_yum
    - unless: rpm -qa | grep salt-minion
minion_conf:
  file.managed:
    - name: /etc/salt/minion
    - source: salt://minions/conf/minion
    - user: root
    - group: root
    - mode: 640
    - template: jinja
    - defaults:
      minion_id: {{ grains['fqdn_ip4'][0] }}        #要求客户端/etc/hosts中绑定其IP及主机名,不绑定主机名在127.0.0.1
    - require:
      - pkg: minion_install
minion_service:
  service.running:
    - name: salt-minion
    - enable: True
    - require:
      - file: minion_conf
b.minion文件为salt-minion版本自带默认minion文件,修改了如下两行:

master: 10.0.10.11    #master端IP
id: {{ minion_id }}         #jinja格式

4.部署salt-minion

salt-ssh端执行如下命令:

salt-ssh -i '*' state.sls minions.install

验证:

salt-ssh -ir '*' 'ps aux | grep salt' | grep salt | grep -v grep | wc -l

对比与/root/gg中IP数目是否相等


### 解决 `salt-ssh` 命令未找到的问题 当遇到 `bash: salt-ssh: command not found` 的错误时,通常是因为 SaltStack 的相关组件尚未安装或环境变量配置不正确。以下是可能的原因以及解决方案: #### 可能原因及解决方法 1. **SaltStack 未完全安装** 如果系统中没有安装 SaltStack 或者仅部分安装,则可能导致无法识别 `salt-ssh` 命令。可以通过以下方式验证并重新安装: ```bash yum list installed | grep salt ``` 若发现缺少 `salt-ssh` 组件,可以运行以下命令来安装完整的 SaltStack 软件包[^2]: ```bash yum install -y salt-master salt-minion salt-ssh ``` 2. **PATH 环境变量缺失** 即使已安装 SaltStack,但如果其二进制文件路径不在系统的 PATH 环境变量中,也会导致此问题。默认情况下,SaltStack 的可执行文件位于 `/usr/bin/` 下。如果该目录未被包含在 PATH 中,可通过以下方式临时修复: ```bash export PATH=$PATH:/usr/bin/ ``` 若要永久生效,需编辑用户的 shell 配置文件(如 `.bashrc` 或 `.bash_profile`),添加上述导出语句。 3. **Python 虚拟环境中冲突** 如果当前正在使用 Python 虚拟环境,而虚拟环境中并未安装 SaltStack,则可能会发生此类错误。此时应退出虚拟环境后再尝试调用 `salt-ssh`,或者通过 pip 安装对应的模块: ```bash deactivate ``` 或者,在虚拟环境中安装 SaltStack: ```bash pip install salt ``` 4. **依赖库缺失** 某些操作系统可能需要额外的依赖项才能正常运行 SaltStack。例如 CentOS/RHEL 上需要 EPEL 存储库支持。确认存储库可用后再次安装 SaltStack[^3]: ```bash yum install epel-release -y yum clean all && yum makecache fast yum install salt-ssh -y ``` 5. **版本兼容性问题** 不同的操作系统发行版对 SaltStack 版本的支持程度不同。建议查看官方文档以获取适合操作系统的最新稳定版本,并手动指定下载链接完成安装[^4]。 ```bash wget https://repo.saltstack.com/py3/redhat/salt-py3-repo-latest.el7.noarch.rpm yum localinstall salt-py3-repo-latest.el7.noarch.rpm -y yum install salt-ssh -y ``` --- ### 示例代码:测试 `salt-ssh` 是否工作正常 假设已经解决了以上提到的各种潜在问题之后,可以用如下简单指令检验功能是否恢复: ```bash salt-ssh '*' test.ping ``` 成功返回结果类似于下面这样表示恢复正常: ```json { "minion1": true, "minion2": true } ``` ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值