侧边栏壁纸
博主头像
落叶人生博主等级

走进秋风,寻找秋天的落叶

  • 累计撰写 130562 篇文章
  • 累计创建 28 个标签
  • 累计收到 9 条评论
标签搜索

目 录CONTENT

文章目录

saltstack入门系列(一) 安装和简单使用

2023-11-04 星期六 / 0 评论 / 0 点赞 / 28 阅读 / 7427 字

点击此处进入---->saltstack入门系列(二) grains和piller 参考文档:本地PDF文档 简单介绍:基于Python开发,和puppet很像,通过ZeroMQ进行通信。可以实现p

点击此处进入---->saltstack入门系列(二)  grains和piller

 

参考文档:本地PDF文档

简单介绍:基于Python开发,和puppet很像,通过ZeroMQ进行通信。可以实现puppet所有功能,且配置更简单,支持大部分系统,但windows上不支持安装master(主:master,从:minion)。saltstack master启动后默认监听4505(pubish_port:消息发布系统)和4506(ret_port:salt客户端与服务端通信的端口)两个端口,会发现所有的minion在4505端口持续保持在ESTABLISHED。

三种工作方式:本地;C/S;基于SSH(不用安装agent)

三大功能:远程命令执行;配置管理(服务、文件、cron、用户、组);云管理

 

        1.安装saltstack

准备两台机器,都写上hostname,因为只有两台主机,hosts文件直接修改,也可以做DNS解析服务器。

#vim /etc/hosts

192.168.58.132      server
192.168.58.130      client

server上:

yum install -y epel-release

yum install -y salt-master salt-minion

client上:

yum install -y epel-release

yum install -y salt-minion

启动:

server上:

/etc/init.d/salt-master start

/etc/init.d/salt-minion start

client上:

先配置minion文件,#vim /etc/salt/minion        //指定server的ip

master: 192.168.58.132      //大概是16行的位置,修改或增加都行,注意冒号后有空格

id: client

说明:这个id可定义可不定义,不定义情况下,master端会以客户端的hostname来显示,定义了则master端以定义的id显示,则先前做的dns解析会生效,速度更快,这个id可以不和hostname一致,也可以直接修改/etc/hosts里的hostname为客户端的hostname,实现dns解析。

保存退出后启动服务即可:#/etc/init.d/salt-minion start

        2.认证:

server上:#salt-key -a client

说明:此时我们在client上的/etc/salt/pki/minion目录下会多出一些文件;

可以使用salt-key查看已经签名的客户端;

salt-key参数说明:-A  签名所有主机;-d    删除指定主机的key。

        3.远程执行:

示例1:#salt '*' test.ping      

这里的*表示所有已经签名的客户端,通过salt-key可查询,通常是我们已经设定的id值,也可以直接将*换成client。*号部分支持通配、列表以及正则:

比如两台客户端client01、client02,可以写成salt 'client'、salt 'clinet0[12]'、salt -L 'client01,client02'、salt -E 'client(01|02)'等形式,其中-L表示使用列表,多个机器有逗号分隔,-E表示使用正则。

示例2:#salt 'client' cmd.run 'ip a'       //因为我没有设定id值,master端默认显示的是客户端的hostname,即我的客户端为centos,实际命令也该输入salt-key列表中的值centos,如下图:

示例3:使用saltstack实现状态管理

server上:

#vim /etc/salt/master        //搜索找到file_roots,修改或增加如下内容:

file_roots:
  base:
    - /srv/salt

#mkdir /srv/salt

#vim /srv/salt/top.sls            //加入如下内容。top.sls类似于puppet的site.pp文件,作为“最高同步”操作的入口文件,执行“最高同步”操作时,将从此sls文件中获取状态对minion进行同步,注意,salt文件采用ymal格式,对代码的缩进有着严格的要求,注意的有:不要使用Tab键缩进,通常开头缩进2个空格,字符后缩进1个空格,如冒号、逗号、横杠。

base:              #base环境,即基础环境,机器要执行的状态才会写到base环境里  '*':    - apache              #意思是在所有客户端执行apache模块

#vim /srv/salt/apache.sls

apache-service:           #自定义信息  pkg.installed:          #调用pkg.installed函数,下面是要安装的包的名字,pkg是模块,installed是方法    - names:              #names使用yum安装多个包      - httpd      - httpd-devel  service.running:        #service.running也是一个函数,来保证指定的服务启动,enbled表示开机启动    - name: httpd    - enable: True

执行(两种方法):如果minion端事先已经安装了服务,那么它不会重复安装

1.#salt 'client' state.highstate        //执行过程,先从入口文件即top.sls开始读,top.sls中规定所有机器都要执行apache这个状态模块(top.sls可实现对多台机器配置多种状态)

2.#salt 'client' state.sls apache        //state.sls表示模块有个sls方法,apache表示附件的一个参数

   下面是运行结果:

 

至此,本文演示了 2 个内容,一是远程执行,二是状态管理。

附录:

# salt-minion -l debug                                                查看salt客户端详细信息
#salt -C ‘wy-pe1 and wy-pe2 or wy-peN’ test.ping        -C表示多参数(表示在测试多台主机的存活状态)

 

# salt ‘*’ disk.usage                         查看磁盘使用情况(使用内建模块查看所有minion端的磁盘使用情况)

如果执行命令时,忘记语法,或需要知道某个模块具体用法,可使用sys.doc模块查询相关使用方法:

eg:    #salt '*' sys.doc pkg                     #salt '*' sys.doc disk

 

#salt ‘*’ cmd.run ‘df -h’                          使用cmd.run直接调用远程shell命令(功能同disk.usage)

如果想查看执行过程,可加-l debug,如下:

#salt '*' cmd.run 'df -h' -l debug

 

cmd.script方式:可以向远程主机执行脚本
#salt ‘*’ cmd.script salt://useradd.sh               向minion主机上执行useradd.sh脚本(salt://是salt的默认发布目录,即/srv/salt)

广告 广告

评论区