saltsack自动化配置day01:之使用SALT-SSH安装SALT-MINION
一、首先在master端安装salt-ssh,我将通过salt-ssh来为minion服务器执行安装命令。
yum -y install salt-ssh
二、部署roster
修改/etc/salt/roster的配置文件
roster配置文件的配置选项有:
# target的信息 host: # 远端主机的ip地址或者dns域名 user: # 登录的用户 passwd: # 用户密码,如果不使用此选项,则默认使用秘钥方式 # 可选的部分 port: #ssh端口 sudo: #可以通过sudo tty: # 如果设置了sudo,设置这个参数为true priv: # ssh秘钥的文件路径 timeout: # 当建立链接时等待响应时间的秒数 minion_opts: # minion的位置路径 thin_dir: # target系统的存储目录,默认是/tmp/salt-<hash> cmd_umask: # 使用salt-call命令的umask值
我使用os.system修改roster文件:
views.py
def serverAdd(request): result = '' if request.method == "POST": form = autoArrMinionForm(request.POST) if form.is_valid(): ip = request.POST.get('add_ip') # 需要安装minion端的ip username = request.POST.get('add_username') # 需要安装minion端的用户名 password = request.POST.get('add_password') # 需要安装minion端的密码 try: os.system("echo '"+ip+":'>> /etc/salt/roster && \ echo ' host: " +ip+ "'>> /etc/salt/roster && \ echo ' user: " +username+ "'>> /etc/salt/roster && \ echo ' passwd: " +password+ "'>> /etc/salt/roster && \ echo ' sudo: True'>> /etc/salt/roster && \ echo ' tty: True'>> /etc/salt/roster && \ echo ' timeout: 10'>> /etc/salt/roster") os.system("salt-ssh '" + ip + "' -ir 'easy_install certifi'") # 安装cretifi模块 (status_gethostname, resultgethostname) = subprocess.getstatusoutput("salt-ssh -ir '" + ip + "' 'hostname'") # 获取hostname os.system("salt-ssh '" + ip + "' -ir 'echo ''"+ip+"' '"+resultgethostname+"''>> /etc/hosts'") # 添加hosts (status, result) = subprocess.getstatusoutput("salt-ssh -i '"+ip+"' state.sls minions.install") # 执行安装命令,并返回结果 except: result = "无法连接该主机,请检查ip和用户密码是否正确!" else: result = "请填写正确的ip和用户名密码" else: form = autoArrMinionForm() re = { "form": form, "result": result } return render(request, "serveradd.html", re)
三、配置state.sls文件结构
1、创建目录:
mkdir -p /srv/salt/minions mkdir -p /srv/salt/minions/conf mkdir -p /srv/salt/minions/yum.repos.d
2、编写.sls文件:
vim install.sls
minion_yum: file.recurse: - name: /etc/yum.repos.d - source: salt://minions/yum.repos.d ##提前准备的yum文件路径 - 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 ##minion端需要配置的minion主配置文件 - user: root - group: root - mode: 640 - template: jinja - defaults: minion_id: {{grains['fqdn_ip4'][0]}} ##这里grains是收集minion端/etc/hosts文件IP和主机名的 - require: - pkg: minion_install minion_service: service.running: - name: salt-minion - enable: True - require: - file: minion_conf
3、编写minion主文件
master: 10.62.83.211 id: {{ minion_id }} #这里的id会被解析成install.sls中的minion_id
4、拷贝yum源文件到yum.repos.d
可从/etc/yum.repos.d拷贝
cp CentOS-Base.repo /srv/salt/minions/yum.repos.d/ cp epel.repo /srv/salt/minions/yum.repos.d/
最终的目录结构为:
[root@mykurol /]# tree /srv /srv `-- salt `-- minions |-- conf | `-- minion |-- install.sls `-- yum.repos.d |-- CentOS-Base.repo `-- epel.repo 4 directories, 4 files
作者:罗阿红
出处:http://www.cnblogs.com/luoahong/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接。