SaltStack 和 Ansible 的简单比较
来源:互联网 发布:淘宝怎么搜失忆水 编辑:程序博客网 时间:2024/06/05 02:27
SaltStack vs. Ansible 对比
从安全角度推荐Ansible的文章
从使用推荐SaltStack的文章
以下使用两台机器作为对比
- 192.168.79.128 主
- 192.168.79.129 从
SaltStack篇
部署SaltStack
参考此文 链接,以及 官方 说明,配置SaltStack(不要导入latest rpm会报错)
yum install salt-masteryum install salt-minionyum install salt-sshyum install salt-syndicyum install salt-cloud
执行安装
配置开机以及启动
chkconfig salt-master onservice salt-master start
minon端安装、配置、启动
yum install salt-minionchkconfig salt-minion onservice salt-minion start
配置SaltStack
参考官方 配置文件
看下安装情况
netstat -anp |grep 450
在/etc/hosts中配置两边
vim /etc/hosts
192.168.79.128 Master
192.168.79.129 Minion
配置文件位于 /etc/salt/ 中,对应为master 和 minion
修改master文件
vim /etc/salt/masterfile_roots:
base:
- /srv/salt/base
prod:
- /srv/salt/prod
修改minion中的salt位置,并重启,在第16行
- #master: salt+ master: 192.168.79.128
生成key
salt-key -F master
生成master.pem/pub
拷贝 Local Keys 部分的 master.pub到minion配置文件的对应master_finger部分
在minion上查看keys
salt-call --local key.finger
使用-A 选项可以全部增加,或者-a单个添加
salt-key -A salt-key -a id
测试命令
salt '*' test.ping
运行命令
salt '*' cmd.run 'df -h'
测试命令
salt-master -l debugsalt-minion -l debug
证书
salt-key -L
grants文件
配置权限客户端Grants信息,一般通过配置文件/模块/Python脚本定义
最好保存到minion下的/etc/salt/minion.d/grains 文件下
查看配置,grains在minion启动时搜集到的信息
salt '*' grains.items
配置在minion端的grains文件(新创建)后,可在master端查到
如添加
role: nginx
env: test
myname: tpp
salt '*' grains.item role env mynamesalt -G role:nginx cmd.run 'hostname'salt -G os:CentOS cmd.run 'hostname'
使用命令定义grains
salt '192.168.79.129' grains.append saltbook 'verycool'salt '192.168.79.129' grains.setvals "{'salt':'good','book':'cool'}"
查看定义的grains
salt '192.168.79.129' grains.item saltbook salt book
Pillar组件
在/srv/pillar下,定义top.sls文件,保存了账户和配置信息
salt '192.168.79.129' sys.list_functions pillarsalt '192.168.79.129' pillar.items
查看pillar值
cat /srv/pillar/services.sls
- zabbix:
- port: 10050
- user: admin
cat /srv/pillar/packages.sls
- zabbix:
- package-name: zabbix
- version: 2.2.4
Module组件
最常用组件
salt '192.168.79.129' sys.list_modulessalt '192.168.79.129' sys.list_functions cmd
查看命令使用
salt '192.168.79.129' sys.doc cmd
执行多个语句
salt '192.168.79.129' test.echo,cmd.run,service.status saltbook,hostname,salt-master
State配置语言
编写state文件,即states.sls文件,使用YAML语法
top.sls作为引导,具体任务执行states.sls
base 默认环境在 /srv/salt下,master中配置
YAML 语言
- 结构:” “空格展示;
- 项目:“- ”来代表;
- 键值对:“:”分割;
不能用tab,大小写敏感,每个缩进2个空格
配合Jinja,先用模板处理,然后在用YAML解析
编译安装Nginx
- 使用模块:file,cmd,service
状态间关系:require,unless
mkdir -p /srv/salt/prod/{pcre,nginx,php}/files
cat /srv/salt/prod/pcre/install.sls
pcre=source-install:
file.managed:
- name: /usr/local/src/pcre-8.37.tar.gz
- source: salt://pcre/files/pcre-8.37.tar.gz
- user: root
- group: root
- mode: 755
cmd.run:
- name: cd /usr/local/src && tar zxf pcre-8.37.tar.gz && cd pcre-8.37 && ./configure –prefix=/usr/local/pcre && make && make install
- unless: test -d /usr/local/pcre
- require:
- file: pcre-source-install
nginx
cd /srv/salt/prod/nginx/files/wget http://nginx.org/download/nginx-1.9.1.tar.gzcat /srv/salt/prod/nginx/install.slsinclude: - pcre.install - user.wwwnginx-source-install: file.managed: - name: /usr/local/src/nginx-1.9.1.tar.gz - source: salt://nginx/files/nginx-1.9.1.tar.gz - user: root - group: root - mode: 755cmd.run: - name: cd /usr/local/src && tar zxf nginx-1.9.1.tar.gz && cd nginx-1.9.1 && ./configure --prefix=/usr/local/nginx --user=www --group=www --with-thhp_ssl_module --with-http_stub_status_module --with-file-aio --with-htp_dav_module --with-pcre=/usr/local/src/pcre-8.37 && make && make install && chown -R www:www /usr/local/nginx - unless: test -d /usr/local/nginx - require: - user: www-user-group - file: nginx-source-install - pkg: pkg-init - cmd: pcre-source-install
SaltStack 安装httpd 服务
/srv/salt/ 下面建立两个文件,参考原文详情链接
top.slsbase: '*': - apacheapache.sls apache-service: pkg.installed: - names: - httpd - httpd-devel service.running: - name: httpd - enable: Truesalt '192.168.79.129' state.highstate
成功,非常好,可先在结尾加 test=True 进行提前对比判断
SaltStack 文件管理
修改 /srv/salt/top.sls
base: '192.168.79.129': - filedir
增加 /srv/salt/filedir.sls
file-dir: file.recurse: - name: /tmp/testdir - source: salt://test1/234 - user: root - file_mode: 644 - dir_mode: 775 - mkdir: True - clean: True
执行
salt ‘slaver.test.com’ state.highstate
删除rm -rf /srv/salt/test1/234/2.txt 后再执行,同步删除
SaltStack 修改cron
1、建立 cron
1)服务端配置
vim /srv/salt/top.sls //修改为如下
base:
‘slaver.test.com’:
- crontest
编辑 crontest.sls 文件
复制代码
vim /srv/salt/crontest.slscron-test: cron.present: - name: /bin/touch /tmp/111.txt - user: root - minute: '*' - hour: 20 - daymonth: 1-10 - month: '3,5' - dayweek: '*'
复制代码
注意,*需要用单引号引起来。当然我们还可以使用 file.managed 模块来管理 cron,因为系统的 cron都是以配置文件的形式存在的。
执行命令:
salt 'slaver.test.com' state.highstate
2)客户端验证
2、删除 cron
1)服务端配置
我们只需修改 crontest.sls 文件
vim /srv/salt/crontest.sls
把 cron.present: 改成 cron.absent:
注意:两者不能共存,要想删除一个 cron,那之前的 present 就得替换掉或者删除掉。
执行命令:
salt 'slaver.test.com' state.highstate
2)客户端验证
crontab -l //可查看到该任务计划已删除
saltstack 编译nginx
top.sls文件
base: '192.168.79.129': - nginx.service
准备file文件在/srv/salt/prod/nginx/files中,放置nginx的tar包和配置文件
install.sls文件,配置所需文件,所需用户,执行编译指令
include: - user.wwwnginx-source-install: file.managed: - name: /usr/local/src/nginx-1.11.6.tar.gz - source: salt://nginx/files/nginx-1.11.6.tar.gz - user: root - group: root - mode: 0644 cmd.run: - name: cd /usr/local/src && tar xvf nginx-1.11.6.tar.gz && cd nginx-1.11.6 && ./configure --user=www --group=www --with-http_ssl_module --with-http_stub_status_module --with-file-aio --with-http_dav_module && make && make install && chown www.www /usr/local/nginx -R - unless: test -d /usr/local/nginx - require: - user: www-user-group
service.sls文件,选择包涵的文件/模块,传递nginx配置文件
include: - nginx.installnginx-init: file.managed: - name: /usr/lib/systemd/system/nginx.service - source: salt://nginx/files/nginx.service - user: root - group: root - mode: 754/usr/local/nginx/conf/nginx.conf: file.managed: - name: /usr/local/nginx/conf/nginx.conf - source: salt://nginx/files/nginx.conf - user: www - group: www - mode: 644nginx.service: cmd.run: - name: /usr/local/nginx/sbin/nginx - require: - file: nginx-init - watch: - file: /usr/local/nginx/conf/nginx.conf
user文件夹下www.sls文件,配置nginx所需用户
www-user-group: group.present: - name: www - gid: 1100 user.present: - name: www - fullname: www - shell: /sbin/nologin - uid: 1100 - gid: 1100
执行安装指令
salt '*' state.highstate
saltstack配置DNS
首先在/srv/salt/init/files/下面准备好resolv.conf
vi /srv/salt/base/init/dns.sls/etc/resolv.conf: file.managed: - source: salt://init/files/resolv.conf - user: root - group: root - mode: 644
saltstack 增加审计
审计命令加入
vi /srv/salt/base/init/audit.sls/etc/bashrc: file.append: - test: - export PROMPT_COMMAND+'{ msg=$(history 1| { read x y; echo $y; }); logger "[euid=$(whoami)]":$(who am i): ['pwd']"$msg";}'
Ansible 篇
安装ansible
使用yum安装
yum install -y ansible
配置服务端
vi /etc/ansible/hosts
加入服务端地址
生成公钥并加入需要免密访问的对方机器用户下
ssh-keygen -t rsa -P ''
参考原文详情链接
ansible的常用模块,链接
Ansible yum安装httpd
ansible node2 -m yum -a "name=httpd state=latest"
ansible 编译安装nginx
参考此篇原文详情
创建目录,下载文件
mkdir -p /ansible/roles/nginx/{defaults,files,handlers,meta,tasks,templates,vars}wget -P /ansible/roles/nginx/files/ http://nginx.org/download/nginx-1.9.9.tar.gz
创建脚本
vi /ansible/roles/nginx/files/install_nginx.sh#!/bin/bash yum -y install zlib zlib-devel openssl openssl-devel pcre-develgroupadd -r nginxuseradd -s /sbin/nologin -g nginx -r nginxcd /tmptar xf nginx-1.9.9.tar.gz;cd nginx-1.9.9mkdir /var/run/nginx/;chown nginx.nginx /var/run/nginx/./configure \--prefix=/usr \--sbin-path=/usr/sbin/nginx \--conf-path=/etc/nginx/nginx.conf \--error-log-path=/var/log/nginx/error.log \--pid-path=/var/run/nginx/nginx.pid \--user=nginx \--group=nginx \--with-http_ssl_modulemake && make installsed "/^\s*index / i proxy_pass http://localhost:8080;" /etc/nginx/nginx.conf/usr/sbin/nginx
创建main.yml
vi /ansible/roles/nginx/tasks/main.yml - name: copy nginx_tar_gz to clientcopy: src=nginx-1.9.9.tar.gz dest=/tmp/nginx-1.9.9.tar.gz - name: copy install_shell to client copy: src=install_nginx.sh dest=/tmp/install_nginx.sh - name: install nginx shell: /bin/bash /tmp/install_nginx.sh
web配置文件
vi /ansible/webservice.yml- hosts: 192.168.79.129 remote_user: root roles:- nginx
执行安装
ansible-playbook webservice.yml
- SaltStack 和 Ansible 的简单比较
- ansible和puppet的安装和比较
- saltstack的简单安装和配置
- Puppet SaltStack Chef Ansible
- 几个配置管理系统puppet、chef、saltstack、ansible的对比
- Saltstack-安装和简单部署
- ansible的简单入门
- ANSIBLE的简单使用
- 自动化过维 ansible saltstack
- 1.saltstack使用指南:saltstack的介绍和安装
- 一个总结比较好的ansible博客
- Puppet vs. Chef vs. Ansible vs. SaltStack
- ansible的安装部署及简单应用
- 非常好的Ansible入门教程(超简单)
- saltstack mutilmaster的具体配置和实现
- saltstack一些简单总结--利用saltstack的event实现自己的功能(2)
- |ansible |chef |docker比较
- saltstack运维自动化的安装与简单配置(一)
- configure: error: Size of "void *" is less than size of "long"
- 3、PHP面向对象
- Scala class和case class的区别
- Ubuntu16.04虚拟机设置固定IP上网
- webview在android4.4版本以后需要知道的事情
- SaltStack 和 Ansible 的简单比较
- atom使用全局配置ESLint
- Windows下select模型
- 【Pat】甲级1005
- HDU--统计同成绩学生人数
- HQL查询语句拼接规范,避免SQL注入攻击
- Python3 爬虫笔记, 顺带mysql编码解决方案
- Java语言开发OPC之Utgard的数据访问方式
- 配置jetty 远程调试