centos下saltstack的安装与部署
Posted ITyouandme
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了centos下saltstack的安装与部署相关的知识,希望对你有一定的参考价值。
1. 基础环境
1.1. 环境信息
主机名 |
IP |
软件 |
备注 |
salt-master |
192.168.32.130 |
||
salt-minion01 |
192.168.32.131 |
||
salt-minion02 |
192.168.32.134 |
1.2. 配置IP
1.3. 关闭防火墙和selinux
systemctl disable firewalld.service
systemctl stop firewalld.service
firewall-cmd --state
1.4. 规范主机名
hostnamectl set-hostname master \\此时主机名配置文件也改了
1.5. 时钟同步
2. 部署saltstack环境
2.1. 安装yum源
yum -y install https://repo.saltstack.com/yum/redhat/salt-repo-latest-2.el7.noarch.rpm \\三台机器都执行
2.2. 安装saltstack
salt-master执行
[root@salt-master ~]# yum -y installsalt-master salt-minion
salt-minion01、salt-minion02执行
[root@salt-minion01 ~]# yum -y installsalt-minion
配置文件/etc/salt/
master的配置文件master
修改master的配置文件
[root@salt-master ~]# sed -i's/#auto_accept: False/auto_accept: True/' /etc/salt/master
\\开启自动认证功能
修改minion的配置文件,如下:
包括服务端的minion和2个客户端的minion
[root@salt-master salt]# IP=$(ifconfigeno16777736 | awk 'NR==2{print$2}');sed -i -e '/^#master: salt/ s/#master:salt/master: 192.168.32.130/' -e "/#id:/ s/#id:/id: $IP/"/etc/salt/minion
[root@salt-minion02 salt]# sed -i's/#master: salt/master: 192.168.32.130/' /etc/salt/minion
192.168.32.130:服务端(master)主机的IP
[root@salt-minion02 salt]# sed -i's/#id:/id: 192.168.32.134/' /etc/salt/minion
192.168.32.134:客户端(minion)主机的IP
最终结果如下:
启动(包括服务端的minion和客户端的minion)
启动服务端\启动客户端\查看状态
[root@salt-master salt]# systemctl startsalt-master.service
[root@salt-master salt]# systemctl enable salt-master.service
------------->
[root@salt-minion02 salt]# systemctl startsalt-minion.service
[root@salt-minion02 salt]# systemctl enablesalt-minion.service
查看有问题
[root@salt-master salt]# salt-key \\查看节点的状态,在服务端查看
[root@salt-mastersalt]# salt-key –A \\将所有未决定的加入进来
[root@salt-master ~]# salt-key -a192.168.32.131 \\把某一个节点加进来
服务端和客户端的私钥和公钥
服务端的公钥
客户端的公钥
创建minion组
设置分发文件的目录(均在master操作)
[root@salt-master ~]# vim /etc/salt/master
注:要分发的数据必须放在指定的根目录下
[root@salt-master base]# systemctl restartsalt-master.service
[root@salt-master ~]# mkdir -p/src/salt/{base,prod}
[root@salt-master /]# salt 192.168.32.130cp.get_dir salt://web /tmp/
因为在master配置文件中指定了根目录的位置,所以就省略了。
cp.get_dir: 就是把master端的file_roots(根目录)下制定的目录传递到minion端指定的目录下
3. 常用命令
3.1. test.ping
[root@salt-master ~]# salt "*"test.ping \\测试客户端的联通性
salt:是命令
*:minion端的id
test:模块
ping:test模块下的方法
master端口tcp/4505
zeromq: 4505:minion连接到master,master 通过这个端口给minion发送数据
4506: master接受minion的返回数据的
minion端口tcp/4506
zeroMQ 通过AES加密算法,密文
3.2. cmd.run
万能命令
[root@salt-master ~]# salt '*' cmd.run"yum -y install telnet"
3.3. cp.get_
/src/salt/base/:master配置文件中指定的根目录
IP:minion端的IP
/tmp:minion端的目录
cp.get_dir:分发目录
cp.get_file:分发文件
/tmp/test2:test2文件名必须明确指出
3.4. cron
cron.raw_cron查询crontab
root:指定要查询的用户
cron.rm_job删除crontab
注:只有通过cron.set_job设置的计划任务才会被删除
cron.set_job 添加crontab
注意双引号的位置
3.5. dnsutil
/etc/hosts 修改本地映射文件
添加映射记录
删除映射记录
3.6. file
file.get_sum:查看文件的加密信息,判断文件是否改变
file.chown:改变文件的属主属组
file.set_mode:设置文件权限
file.copy复制minion的文件从源目录到目的目录
file.directory_exists :查询minion端制定的目录是否存在,存在返回True,不存在返回False
file.mkdir:创建目录,可以创建多级嵌套的目录
file.remove:删除目录或文件,每次只能删除一级目录,不是salt创建的目录也可以删除
file.append:追加内容到文件
file.get_mode:查询文件或者目录权限
3.7. network
network.dig:查看域名的信息
network.ping:测试联通性
network.traceroute:路由跟踪
network.interface:查看指定网卡的所有信息
network.interfaces:查看所有网卡的信息
network.ipnetwork.interface_ip:获取IP
network.subnets:获取子网掩码
3.8. pkg
pkg.install: 根据系统平台,调用不同的包管理根据安装包,centos调用的是yum,ubuntu调用的是apt-get
pkg.remove:卸载
3.9. service
[root@salt-master ~]# salt 192.168.32.134pkg.install httpd
service.enable:设置服务的开机启动
service.disable:开机不启动
service.start:
service.stopservice.reload service.restart service.status
4. 配置管理
4.1. yum部署lamp
[root@salt-master prod]# mkdir{php,mysql,apache}
安装apache
[root@salt-master prod]# cd apache/
[root@salt-master apache]# vim httpd.sls
apache-install:
pkg.installed:
-name: httpd
apache-install:
pkg.installed:
-name: httpd
apache-service:
service.running:
-name: httpd
- enable: True
开始安装
[root@salt-master php]# salt 192.168.32.134state.sls apache.httpd saltenv=prod
如果不加入环境变量saltenv=prod(在/etc/salt/master中指定的),则apache.httpd应该为
安装mysql
[root@salt-master mysql]# vim mysql.sls
mysql-install:
pkg.installed:
-name: mysql-server
service-mysql:
service.running:
-name: mysqld
- enable: True
因为CentOS7的yum源中默认没有mysql的,需要做一下操作:
[root@salt-minion02 yum.repos.d]# wget http://repo.mysql.com/mysql-community-release-el7-5.noarch.rpm
[root@salt-minion02 yum.repos.d]# rpm -ivhmysql-community-release-el7-5.noarch.rpm
[root@salt-master files]# salt192.168.32.134 state.sls mysql.mysql saltenv=prod
mysql的安装时间较长,请耐心等待,大约1个小时。
4.2. 源码部署
上传包到salt的根目录下(必须)
编写nginx的sls文件
www-user-group:
group.present:
-name: www
-gid: 1001
user.present:
-name: www
-fullname: www
-shell: /sbin/nologin
-gid: 1001
- uid: 1001
[root@salt-master files]# vim nginx.sls
include:
-web.files.user
depend-install:
pkg.installed:
-pkgs:
- pcre
- openssl
- zlib
nginx-source-install:
file.managed:
-name: /usr/local/src/nginx-1.8.1.tar.gz
-source: salt://web/files/nginx-1.8.1.tar.gz
-user: root
-group: root
-mode: 644
cmd.run:
-name: cd /usr/local/src/ && tar zxf nginx-1.8.1.tar.gz && cdnginx-1.8.1 && ./configure --prefix=/usr/loc
al/nginx-1.8.1 --user=www --group=www--with-http_ssl_module --with-http_sub_module --with-http_stub_status_module--with-http_gzip_static_module --with-http_gunzip_module --with-pcre &&make && make install && ln -s /usr/local/nginx-1.8.1/usr/local/nginx && chown -R www.www /usr/local/nginx-1.8.1 &&/usr/local/nginx/sbin/nginx - unless:test -d /usr/local/nginx-1.8.1
-require:
- file: nginx-source-install
- pkg: depend-install
- user: www-user-group
以上是关于centos下saltstack的安装与部署的主要内容,如果未能解决你的问题,请参考以下文章