建设网站基本步骤,网站建设先做前台还是后台,江门网站推广软件,国内品牌设计公司目录#xff1a;zabbix其他篇 01#xff1a;saltstack 基本使用 02#xff1a;saltstack-api使用详解 目录#xff1a; 1.1 准备实验环境: 安装系统1.2 克隆一台虚拟机完成使用环境1.3 saltstack介绍1.4 saltstack安装 1.5 saltstack常用模块 1.6 salt ssh详解 1.7 Salt Gr… 目录zabbix其他篇 01saltstack 基本使用 02saltstack-api使用详解 目录 1.1 准备实验环境: 安装系统1.2 克隆一台虚拟机完成使用环境1.3 saltstack介绍1.4 saltstack安装 1.5 saltstack常用模块 1.6 salt ssh详解 1.7 Salt Grains 1.8 Salt Pillar 1.1 准备实验环境: 安装系统 返回顶部 1硬件配置如下 2 先把光标放到”install CentOS 7”按 Tab键编辑内核参数添加 (net.ifnames0 biosdevname0) 作用使网卡名称为 eth0 这样的格式 3 建议安装语言改成 简体中文其他保持默认即可 4设置完root密码等待安装完成重启即可完成系统安装 5配置 VMware NAT 模式默认地址池 编辑----》虚拟网络编辑器 1.2 克隆一台虚拟机完成使用环境 返回顶部 1配置网卡 vi /etc/sysconfig/network-scripts/ifcfg-eth0 systemctl restart network systemctl disable firewalld systemctl disable NetworkManager 2设置主机名 vi /etc/hostname linux-node1.example.com 3设置主机名解析 vi /etc/hosts 192.168.56.11 linux-node1 linux-node1.example.com 192.168.56.12 linux-node2 linux-node2.example.com 4设置DNS vi /etc/resolv.conf nameserver 192.168.56.2 5安装最新epel yum源 注此地址中有各种源https://opsx.alibaba.com/mirror rpm -ivh https://mirrors.aliyun.com/epel/epel-release-latest-7.noarch.rpm 6yum安装 一些基础包 yum -y install net-tools vim lrzsz tree screen lsof tcpdump nc mtr nmap 7关闭selinux vim /etc/selinux/config SELINUXdisabled 8重启系统 yum update -y reboot # 升级所有包同时也升级软件和系统内核, 并重启 9确认是否一些服务是否已按计划关闭 getenforce # selinux是否关闭 firewall-cmd --state # 防火墙是否关闭 1.2 克隆一台虚拟机完成使用环境 注克隆虚拟机必须要先关闭shutdown 1右键 “管理” ----》“克隆” ----》 2选择 从哪个状态创建克隆 3克隆类型创建完整克隆 4新建虚拟机名称 5点击 “完成” 即可完成虚拟机克隆 6对克隆的虚拟机 node2 进行一些简单修改 vim /etc/hostname # 1、修改主机名 linux-node1.example.com vi /etc/sysconfig/network-scripts/ifcfg-eth0 IPADDR192.168.56.12 reboot 1.3 saltstack介绍 返回顶部 1、saltstack说明 1salt是一个异构平台基础设置管理工具(虽然我们通常只用在Linux上)使用轻量级的通讯器ZMQ 2用Python写成的批量管理工具完全开源遵守Apache2协议与PuppetChef功能类似有一个强大的远程执行命令引擎 3也有一个强大的配置管理系统通常叫做Salt State System。 4主要作用 远程执行、配置管理、事件驱动 a. 远程执行 及支持 使用agent 支持 使用ssh远程执行 b. 配置管理 如果用salt描述nginx没有就会帮你安装如果nginx配置不对就会帮你改对保证机器状态和你描述一致 5特点即可支持 agent 方式也支持 ssh方式 2、基本原理 1SaltStack 采用 C/S模式server端就是salt的masterclient端就是minionminion与master之间通过ZeroMQ消息队列通信 2minion上线后先与master端联系把自己的pub key发过去这时master端通过salt-key -L命令就会看到minion的key接受该minion-key后也就是master与minion已经互信 3master可以发送任何指令让minion执行了salt有很多可执行模块比如说cmd模块在安装minion的时候已经自带了它们通常位于你的python库中 3、saltstack具体步骤如下 1Salt stack的Master与Minion之间通过ZeroMq进行消息传递使用了ZeroMq的发布-订阅模式连接方式包括tcpipc 2salt命令将cmd.run ls命令从salt.client.LocalClient.cmd_cli发布到master获取一个Jodid根据jobid获取命令执行结果。 3master接收到命令后将要执行的命令发送给客户端minion。 4minion从消息总线上接收到要处理的命令交给minion._handle_aes处理 5minion._handle_aes发起一个本地线程调用cmdmod执行ls命令。线程执行完ls后调用minion._return_pub方法将执行结果通过消息总线返回给master 6master接收到客户端返回的结果调用master._handle_aes方法将结果写的文件中 7salt.client.LocalClient.cmd_cli通过轮询获取Job执行结果将结果输出到终端。 4、saltstack认证原理 1salt-master和salt-minion第一次启动时会在 /etc/salt/pki/master目录下生成公钥和私钥用于身份验证 [rootlinux-node1 master]# cd /etc/salt/pki/master [rootlinux-node1 master]# ll -lh -r-------- 1 root root 1.7K Jan 7 05:36 master.pem -rw-r--r-- 1 root root 450 Jan 7 05:36 master.pub 2所有未认证minion的私钥都会放到master的 /etc/salt/pki/master/minions_pre/ 文件夹下 3当minion通过认证后就会放到 /etc/salt/pki/master/minions 文件夹下 4master通过在认证的同时会把自己的公钥发送给minion, minion会放到 /etc/salt/pki/minion/minion_master.pub 5这样就实现了双向密钥交换 1.4 saltstack安装 返回顶部 注saltstack官方提供了各种版本系统安装方法地址http://repo.saltstack.com/#rhel 1、在linux-node1 中安装saltstack master 和 minion yum -y install https://repo.saltstack.com/yum/redhat/salt-repo-latest-2.el7.noarch.rpm yum -y install salt-master salt-minion /etc/salt/mastermaster配置文件 /etc/salt/minionminion配置文件 2、在linux-node2 中安装saltstack minion yum -y install https://repo.saltstack.com/yum/redhat/salt-repo-latest-2.el7.noarch.rpm yum -y install salt-minion /etc/salt/minionminion配置文件 3、在linux-node1中配置 salt-minion vim /etc/salt/minion #master: salt 修改为master: 192.168.56.11 ----》配置master IP #id: 修改为id: linux-node1.example.com ---》告诉master自己是谁默认会读取当前主机名 注saltstack是以主机名区分不同 agent 需保证主机名唯一 4、在linux-node2中配置 salt-minion vim /etc/salt/minion #master: salt 修改为master: 192.168.56.11 ----》配置master IP #id: 修改为id: linux-node2.example.com ---》告诉master自己是谁默认会读取当前主机名 5、启动linux-node1中salt-maser 和 salt-minion systemctl start salt-master # 启动salt-master systemctl enable salt-master # 设置salt-master开机自启动 systemctl start salt-minion # 启动 systemctl enable salt-minion # 开机自启动 6、启动linux-node2中salt-minion systemctl start salt-minion # 启动 systemctl enable salt-minion # 开机自启动 7、认证 salt-key # 在master中查看所有key的状态 salt-key -a linux-node1.example.com # 认证 linux-node1.example.com的key salt-key -A # 一次性认证所有key 8、远程执行测试 salt \* test.ping # 测试saltstack minion与master的连通性 salt \* cmd.run df -h # 在所有minion中批量执行 df -h 命令 1.5 saltstack常用模块 返回顶部 1、cmd.run 远程执行 功能: 实现远程命令执行 salt * cmd.run free -m 2、cp模块 功能: 实现远程文件、目录复制,下载Url文件等操作 # 1、master配置同步根目录YAML语法1. 每一级使用两个空格 2. 短横线表示列表
vim /etc/salt/masterfile_roots:base:- /srv/saltdev:- /srv/salt/devsystemctl restart salt-master # 需要重启master# 2、创建同步目录文件夹和测试文件 /srv/salt/test.sh
mkdir -p /srv/salt/dev
vim /srv/salt/test.sh #创建测试文件# 3、将 /srv/salt/ 下的test.sh文件同步到所有minion
salt * cp.get_file salt://test.sh /tmp/test.sh# 4、创建目录 makedirs当分发的位置在目标主机上不存在时自动创建该目录
salt * cp.get_file salt://test.sh /aaa/test.sh makedirsTrue# 5、将 /srv/salt 中的testdir 目录复制到所有minion
mkdir /srv/salt/testdir/
salt * cp.get_dir salt://testdir /aaa/# 6、下载百度首页内容保存到所有minion中 salt * cp.get_url http://www.baidu.com /tmp/index.html 3、状态管理神笔马良 1修改 /etc/salt/master 文件 # 1、master配置同步根目录YAML语法1. 每一级使用两个空格 2. 短横线表示列表
vim /etc/salt/masterfile_roots:base:- /srv/saltdev:- /srv/salt/devsystemctl restart salt-master # 需要重启master 2在 /srv/salt/ 下配置状态管理 [rootlinux-node1 /]# vim /srv/salt/web/apache.sls # 1.描述了要装一个httpd服务
apache-install: # 这个是一个名称可以随便写pkg.installed: # pkg是状态模块installed是状态模块中的方法- name: httpd # 描述了我在里要装一个httpd包# 2.描述了httpd服务是启动状态并且是开机自启动状态
apache-service: # 这个是一个名称可以随便写service.running: # 描述了httpd服务是运行的状态- name: httpd- enable: True # 描述httpd服务开机自动启动 3在 salt-master中执行命令让 linux-node2按照描述完成按照 [rootlinux-node1 web]# salt linux-node2.example.com state.sls web.apache 1通过远程执行通知node2进行配置管理 2state.sls # 远程执行的一个方法 3web.apache # 执行web目录下的apache文件 4、grains.item模块 功能获取机器基本信息cpu、内存 # 1、查看系统版本
[rootlinux-node1 salt]# salt linux-node1.example.com grains.item os
linux-node1.example.com:----------os:CentOS# 2、查看cpu型号
[rootlinux-node1 salt]# salt linux-node1.example.com grains.item cpu_model
linux-node1.example.com:----------cpu_model:Intel(R) Core(TM) i7-7500U CPU 2.70GHz# 3、获取ipv4地址
[rootlinux-node1 salt]# salt linux-node1.example.com grains.item fqdn_ip4
linux-node1.example.com:----------fqdn_ip4:- 192.168.56.11# 4、查询内核版本
[rootlinux-node1 salt]# salt linux-node1.example.com grains.item kernelrelease
linux-node1.example.com:----------kernelrelease:3.10.0-957.1.3.el7.x86_64# 5、查看主机名
[rootlinux-node1 salt]# salt linux-node1.example.com grains.item nodename
linux-node1.example.com:----------nodename:linux-node1.example.com# 6、查看系统版本号 centos6、centos7等
[rootlinux-node1 salt]# salt linux-node1.example.com grains.item osmajorrelease
linux-node1.example.com:----------osmajorrelease:7
# 7、查看salt版本
[rootlinux-node1 salt]# salt linux-node1.example.com grains.item saltversion
linux-node1.example.com:----------saltversion:2018.3.3# 8、查看cpu数据量
[rootlinux-node1 salt]# salt linux-node1.example.com grains.item num_cpus
linux-node1.example.com:----------num_cpus:1# 9、查看内存大小
[rootlinux-node1 salt]# salt linux-node1.example.com grains.item mem_total
linux-node1.example.com:----------mem_total:1819# 10、查看ipv4地址
[rootlinux-node1 salt]# salt linux-node1.example.com grains.item ipv4
linux-node1.example.com:----------ipv4:- 127.0.0.1- 192.168.56.11 grains.item获取主机基本信息 5、Service模块 salt * service.reload nginx 1.6 salt ssh详解 返回顶部 1、安装master和minion中都需要安装 yum -y install salt-ssh 2、配置花名册配置要管理的机器 vim /etc/salt/roster # Sample salt-ssh config file
#web1:
# host: 192.168.42.1 # The IP addr or DNS hostname
# user: fred # Remote executions will be executed as user fred
# passwd: foobarbaz # The password to use for login, if omitted, keys are used
# sudo: True # Whether to sudo to root, not enabled by default
#web2:
# host: 192.168.42.2linux-node1.example.com:host: 192.168.56.11user: rootpasswd: chnsys2016port: 22linux-node2.example.com:host: 192.168.56.12user: rootpasswd: chnsys2016port: 22 /etc/salt/roster 3、常用命令 salt-ssh * test.ping -i # 使用salt自身模块 salt-ssh * cmd.run df -lh salt-ssh * -r ifconfig # 执行原生shell命令 -r, –raw, –raw-shell # 直接使用shell命令
–priv #指定SSH私有密钥文件
–roster #定义使用哪个roster系统如果定义了一个后端数据库扫描方式或者用户自定义的的roster系统默认的就是/etc/salt/roster文件
–roster-file #指定roster文件
–refresh, –refresh-cache #刷新cache如果target的grains改变会自动刷新
–max-procs #指定进程数默认为25
-i, –ignore-host-keys #当ssh连接时忽略keys
–passwd #指定默认密码
–key-deploy #配置keys 设置这个参数对于所有minions用来部署ssh-key认证这个参和–passwd结合起来使用会使初始化部署很快很方便。当调用master模块时并加上参数 –key-deploy 即可在minions生成keys下次开始就不使用密码 salt-ssh命令用法 1.7 Salt Grains 返回顶部 1、grains作用 grains是minion第一次启动的时候采集的静态数据可以用在salt的模块和其他组件中。 其实grains在每次的minion启动重启的时候都会采集即向master汇报一次的。 grains 的作用是在每个minion中配置 key value进行标识使批量执行时可以区分 salt linux-node1* grains.ls # grains支持通配符 2、salt grains原生命令 1. salt * grains.items # 查看minion的全部静态变量 2. salt * grains.ls # 显示grains的变量名称 3. salt * grains.item os # 显示某一个变量 4. salt * grains.get ip4_interfaces:eth0 # 直接获取内容 5. salt -G os:CentOs test.ping # 所有os的centos的 执行test.ping (-G就是grains) 3、自定义grains需要重启 minion # 1、编辑 minion 文件配置角色名
vim /etc/salt/miniongrains:roles: apache
# 2、重启minion
systemctl restart salt-minion# 3、查看所有机器都有哪些roles
[rootlinux-node1 ~]# salt * grains.item roles
linux-node1.example.com:----------roles:apache
linux-node2.example.com:----------roles:# 4、让所有角色为apache的机器执行命令w-G表示以grains进行目标选择
salt -G roles:apache cmd.run w 自定义grains需要重启 minion 4、自定义grains无需重启minion # 1、在minion中新建文件/etc/salt/grains添加一个 key value
vim /etc/salt/grainstest-grains: test-grains-value
# 2、让minion到所有grains中读取配置
salt * saltutil.sync_grains# 3、查看所有 key为test-grains的minion
[rootlinux-node1 ~]# salt * grains.item test-grains
linux-node1.example.com:----------test-grains:test-grains-value
linux-node2.example.com:----------test-grains:# 4、让所有keytest-grains valuetest-grains-value 的机器执行命令w-G表示以grains进行目标选择
salt -G test-grains:test-grains-value cmd.run w 自定义grains无需重启minion 1.8 Salt Pillar 返回顶部 1、Salt Pillar 1. 存储位置存储在master端存放需要提供给minion的信息minion每次需要动态从master获取 2. 应用场景敏感信息每个minion只能访问master分配给自己的 pillar 2、在master配置文件中指定pillar位置 vim /etc/salt/masterpillar_roots:base:- /srv/pillarsystemctl restart salt-mastermkdir /srv/pillarcd /srv/pillar 3、编辑一个pillar文件 需求在centos(httpd)和Ubuntu(apache2)都需要apache服务但是两种操作系统安装的包名不同 vim /srv/pillar/apache.sls # 编辑一个pillar文件{% if grains[os] CentOS %}
apache: httpd
{% elif grains[os] Debian %}
apache: apache2
{% endif %} 4、指定这个pillar文件给那个minion使用 vim top.sls # 指定这个pillar文件给那个minion使用base:linux-node2.example.com:- apache 5、确认 pillar中配置的items是否生效 [rootlinux-node1 pillar]# salt * pillar.items
linux-node1.example.com:----------
linux-node2.example.com:----------apache:httpd 6、 Salt Grains 与 Salt Pillar 比较 转载于:https://www.cnblogs.com/xiaonq/p/10233439.html