学习Linux的第七十一天

grains

在这里插入图片描述
在这里插入图片描述
grains是在minion启动时收集到的一些信息,比如操作系统类型、网卡ip、内核版本、cpu架构等。
grains的信息并不是动态的,并不会实时变更,它是在minion启动时收集到的。

列出所有的grains项目名字
格式:salt ‘主机名’ grains.ls
[root@KXLZQ ~]# salt ‘*’ grains.ls
XXQ:

  • SSDs
  • biosreleasedate
  • biosversion
    列出所有grains项目以及值
    格式:salt ‘主机名’ grains.items
    [root@KXLZQ ~]# salt ‘*’ grains.items
    XXQ:

SSDs:
biosreleasedate:
07/31/2013
biosversion:
6.00
grains支持自定义信息,等于给主机打标签
步骤
在XXQ上添加自定义grains信息
[root@XXQ ~]# vim /etc/salt/grains
添加以下内容:
role: web ##一个key对应一个value
env: test
重启minion服务
[root@XXQ ~]# systemctl restart salt-minion
在KXLZQ上根据grains信息执行命令
[root@KXLZQ ~]# salt ‘*’ grains.item role env ##列出所有grains是role env的值
XXQ:
env:
test
role:
web
KXLZQ:
env:
role:
让grains中role是web的主机运行命令w
格式: salt -G 定义的k-v cmd.run ‘命令’

[root@KXLZQ ~]# salt -G role:web cmd.run ‘w’
XXQ:
17:17:49 up 6:54, 1 user, load average: 0.00, 0.01, 0.05
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
root pts/0 192.168.70.1 10:24 4:13 0.03s 0.03s -bash、

pillar

在这里插入图片描述
在这里插入图片描述
pillar和grains不一样,是在master上定义的,并且是针对minion定义的一些信息。像一些比较重要的数据(密码)可以存在pillar里,还可以定义变量等。在master上给客户机打标签,更加安全。
配置自定义pillar
步骤
配置master配置文件
[root@KXLZQ ~]# vim /etc/salt/master
去掉下面参数的注释#
pillar_roots:
base: ##空两格

  • /srv/pillar ##空四格
    创建/srv/pillar目录,/srv/pillar目录用于存放pillar文件
    [root@KXLZQ ~]# mkdir /srv/pillar
    创建子和主配置文件
    [root@KXLZQ ~]# cd /srv/pillar/ #移动至/srv/pillar/
    [root@KXLZQ pillar]# vim top.sls #创建并编辑top.sls文件,salt都会先通过该配置文件去调用pillar的相关定义文件。
    增加内容如下:
    base:
    ‘KXLZQ’: ##空两格,定义主机
    • test ##空四格,定义调用的文件名称
      ‘XXQ’: ##空两格,定义主机
    • test2 ##空四格,定义调用的文件名称
      创建top.sls文件中定义的文件
      [root@KXLZQ pillar]# vim test.sls
      添加内容如下:
      conf: /etc/123.conf
      [root@KXLZQ pillar]#vim test2.sls
      添加内容如下:
      conf: /etc/123aa.conf
      3.重启salt-master服务
      [root@KXLZQ pillar]# systemctl restart salt-master
      刷新pillar配置
      格式:salt ‘主机名’ saltutil.refresh_pillar
      [root@KXLZQ pillar]# salt ‘’ saltutil.refresh_pillar
      XXQ:
      True
      KXLZQ:
      True
      查看特定pillar的值
      格式:salt ‘主机名’ pillar.item 键
      [root@KXLZQ pillar]# salt '
      ’ pillar.item conf
      KXLZQ:

conf:
/etc/123.conf
XXQ:
conf:
/etc/123aa.conf

安装配置httpd

在这里插入图片描述
在这里插入图片描述
使用saltstack来安装软件包 centOS默认使用yum安装
步骤
配置master配置文件
[root@KXLZQ ~]# vim /etc/salt/master
把下面参数#去掉,依然要留空格1、2、4
file_roots:
base:

  • /srv/salt/
    重启salt-master服务
    [root@KXLZQ ~]# systemctl restart salt-master
    创建/srv/salt目录
    [root@KXLZQ ~]# mkdir /srv/salt
    创建主配置文件
    [root@KXLZQ ~]# cd /srv/salt/
    [root@KXLZQ salt]# vim top.sls
    base:
    ‘*’:
  • httpd
    创建具体的安装配置文件httpd.sls,格式依然留空格1、2、4、6
    [root@KXLZQ salt]# vim httpd.sls
    httpd-service:
    pkg.installed:
  • names:
    • httpd
    • httpd-devel
      service.running:
    • name: httpd
    • enable: True
      httpd-service是id的名字,自定义的。pkg.installed 为包安装函数,下面是要安装的包的名字。service.running也是一个函数,来保证指定的服务启动,enable表示开机启动。
      执行安装httpd包
      格式:salt ‘主机名’ state.highstate
      [root@KXLZQ salt]# salt ‘XXQ’ state.highstate
      XXQ:
      ID: httpd-service
      Function: pkg.installed
      Name: httpd
      Result: True
      Comment: The following packages were installed/updated: httpd
      Duration: 106613.517 ms
      查看XXQ上是否安装http服务
      [root@XXQ ~]# ps aux |grep httpd
      root 4395 0.1 0.4 224020 4992 ? 21:27 0:00 /usr/sbin/httpd -DFOREGROUND
      apache 4396 0.0 0.2 224020 2952 ? 21:27 0:00 /usr/sbin/httpd -DFOREGROUND
      [root@XXQ ~]# netstat -lntp |grep 80
      tcp6 0 0 :::80 ::😗 LISTEN 4395/httpd
      在centOS7中/lib/systemd/system/是存放服务service文件的目录
      [root@XXQ ~]# ls /lib/systemd/system/httpd.service
      /lib/systemd/system/httpd.service

配置管理文件

在这里插入图片描述
在这里插入图片描述
在服务端使用saltstack存放模板文件再分发到其他客户机上
步骤
配置master的salt的主配置文件
[root@KXLZQ ~]# vim /etc/salt/master
把下面参数#去掉
file_roots:
base:
- /srv/salt/
重启salt-master服务
[root@KXLZQ ~]# systemctl restart salt-master
创建/srv/salt目录
[root@KXLZQ ~]# mkdir /srv/salt
创建top.sls文件,用于定义具体配置文件的路径
[root@KXLZQ ~]# cd /srv/salt/
[root@KXLZQ salt]# vim top.sls
内容如下:
base:
‘*’:
- file
创建top文件中定义的配置文件,用于定义具体的参数和文件(需要留空)
[root@KXLZQ salt]# vim file.sls
内容如下:
file_test:
file.managed:
- name: /tmp/XXQ
- source: salt://test/1.txt
- user: root
- group: root
- mode: 600
第一行的file_test为自定的名字,表示该配置段的名字,managed文件管理模块 name指定客户机的文件路径 source指定文件从哪里拷贝,salt://test/1.txt相当于是/srv/salt/test/1.txt file
创建测试文件1.txt
[root@KXLZQ salt]# mkdir test
[root@KXLZQ salt]# echo “111” > test/1.txt
传输文件
[root@KXLZQ salt]# salt ‘XXQ’ state.highstate
XXQ:
ID: file_test
Function: file.managed
Name: /tmp/XXQ
Result: True
查看XXQ上是否有XXQ文件
[root@XXQ ~]# ll -a /tmp/XXQ
-rw------- 1 root root 4 9月 8 21:59 /tmp/XXQ
[root@XXQ ~]# cat /tmp/XXQ

配置管理目录

在这里插入图片描述
在这里插入图片描述
用saltstack把目录分发到客户机上执行
步骤

创建top.sls配置文件
[root@KXLZQ ~]# cd /srv/salt/
[root@KXLZQ salt]# vim top.sls
内容如下:
base:
‘*’:
- dir
创建top文件中定义的具体的规则文件dir.sls
[root@KXLZQ salt]# vim dir.sls
file_dir:
file.recurse:

  • name: /tmp/testdir
  • source: salt://test/123
  • user: root
  • file_mode: 640
  • dir_mode: 750
  • mkdir: True
  • clean: True
    clean加上它之后,源删除文件或目录,目标也会跟着删除,否则不会删除
    创建对应目录
    [root@KXLZQ salt]# mkdir test/123
    分发目录
    [root@KXLZQ salt]# salt ‘XXQ’ state.highstate
    XXQ:
    ID: file_dir
    Function: file.recurse
    Name: /tmp/testdir
    在XXQ上查看
    root@XXQ ~]# ll -ad /tmp/testdir/
    drwxr-x— 2 root root 6 12月2711:25 /tmp/testdir/
    在123目录下在创建一个空目录和文件
    [root@KXLZQ salt]# mkdir test/123/11
    [root@KXLZQ salt]# touch test/123/11.txt
    [root@KXLZQ salt]# ls test/123/
    11 11.txt
    再次分发
    [root@KXLZQ salt]# salt ‘XXQ’ state.highstate
    到XXQ上查看
    [root@XXQ ~]# ls /tmp/testdir/
    11.txt
    saltstack只分发了文件,空目录不会被分发
    在11目录上创建文件再分发
    [root@KXLZQ salt]# touch test/123/11/1.txt
    [root@KXLZQ salt]# salt ‘XXQ’ state.highstate
    再到XXQ上查看
    [root@XXQ ~]# ls /tmp/testdir/ ##有11目录
    11 11.txt
    目录为非空目录时会被分发

配置管理远程命令

在这里插入图片描述
在这里插入图片描述
用saltstack把shell脚本分发到客户机上执行
步骤
创建top.sls配置文件
[root@KXLZQ salt]# vim top.sls
内容如下:
base:
‘*’:
- shell
创建top配置文件定义的规则文件shell.sls
[root@KXLZQ salt]# vim shell.sls
内容如下:
shell_test:
cmd.script:

  • source: salt://test/1.sh
  • user: root
    创建对应的脚本
    [root@KXLZQ salt]# vim test/1.sh
    内容如下:
    #!/bin/bash
    touch /tmp/1122.txt
    if [ ! -d /tmp/1122 ]
    then
    mkdir /tmp/1122
    fi
    分发脚本
    [root@KXLZQ salt]# salt ‘XXQ’ state.highstate
    在XXQ上查看,脚本执行成功
    [root@XXQ ~]# ls /tmp/
    1122
    1122.txt斜体样式

配置管理计划任务

在这里插入图片描述
在这里插入图片描述
用saltstack把计划任务分发到客户机上执行
步骤
创建top.sls主配置文件
[root@KXLZQ salt]# vim top.sls
内容如下:
base:
‘*’:

  • cron
    创建top配置文件定义的规则文件cron.sls
    [root@KXLZQ salt]# vim cron.sls
    内容如下:
    cron_test:
    cron.present:
    • name: /bin/bash /tmp/111.txt
    • user: root
    • minute: ‘*’
    • hour: 20
    • daymonth: ‘*’
    • month: ‘*’
    • dayweek: ‘*’
      *需要用单引号引起来。当然我们还可以使用file.managed模块来管理cron,因为系统的cron都是以配置文件的形式存在的。
      分发任务计划到XXQ
      [root@KXLZQ salt]# salt ‘XXQ’ state.highstate
      在XXQ上查看crontab
      [root@XXQ ~]# crontab -l
      Lines below here are managed by Salt, do not edit # SALT_CRON_IDENTIFIER:/bin/bash /tmp/111.txt
  • 20 * * * /bin/bash /tmp/111.txt
    提示:# Lines below here are managed by Salt, do not edit 不能改动他们,否则就不能通过salt来管理这个任务计划
    删除任务计划,需要修改规则文件
    [root@KXLZQ salt]# vim cron.sls
    内容如下
    cron_test:
    cron.absent:
    • name: /bin/bash /tmp/111.txt
      执行命令删除任务计划
      [root@KXLZQ salt]# salt ‘XXQ’ state.highstate
      在XXQ上,查看crontab
      [root@XXQ ~]# crontab -l
      Lines below here are managed by Salt, do not edit

其他命令

在这里插入图片描述
显示存活的minion
格式:salt-run manage.up
[root@KXLZQ salt]# salt-run manage.up

  • KXLZQ
  • XXQ
    拷贝master上的文件到客户端
    格式:salt ‘主机名’ cp.get_file salt://原文件 目标文件
    [root@KXLZQ salt]# salt ‘’ cp.get_file salt://test/1.txt /tmp/123.txt
    XXQ:
    /tmp/123.txt
    KXLZQ:
    /tmp/123.txt
    拷贝目录到客户端
    格式:salt ‘主机名’ cp.get_dir salt://原目录 目标目录
    [root@KXLZQ salt]# salt '
    ’ cp.get_dir salt://test/123 /tmp/
    KXLZQ:
  • /tmp//123/11.txt
  • /tmp//123/11/1.txt
    XXQ:
  • /tmp//123/11.txt
  • /tmp//123/11/1.txt
    分发并执行脚本
    格式:salt ‘主机名’ cmd.script salt://原脚本路径
    [root@KXLZQ salt]# salt ‘*’ cmd.script salt://test/1.sh
    XXQ:
    pid:
    2493
    retcode:
    stderr:
    stdout:
    KXLZQ:
    pid:
    7470
    retcode:
    0
    stderr:
    stdout:

salt-ssh使用

在这里插入图片描述
salt-ssh不需要对客户端做认证,客户端也不用安装salt-minion
步骤
安装saltstack yum源和salt-ssh包
[root@KXLZQ ~]# yum install -y http://repo.saltstack.com/yum/redhat/salt-repo-latest-2.el7.noarch.rpm
[root@KXLZQ ~]# yum install -y salt-ssh
修改配置文件
[root@KXLZQ ~]# vim /etc/salt/roster
添加下面参数:
KXLZQ:
host: 192.168.70.128
user: root
passwd: 38003800
XXQ:
host: 192.168.70.129
user: root
passwd: 38003800
使用salt-ssh执行命令
格式:salt-ssh [–key-deploy] ‘主机名’ -r ‘命令’
[root@KXLZQ ~]# salt-ssh --key-deploy ‘’ -r ‘hostname’
XXQ:
retcode:
254
stderr:
stdout:
The host key needs to be accepted, to auto accept run salt-ssh with the -i flag:
The authenticity of host ‘192.168.157.130 (192.168.157.130)’ can’t be established.
ECDSA key fingerprint is SHA256:2dycAKJ+5BsHwXALskxaqtyNdNwRCFReWhmwJ2peUu0.
ECDSA key fingerprint is MD5:00:30:54:23:97:64:c3:1d:ee:65:a0:99:0f:f9:28:5c.
Are you sure you want to continue connecting (yes/no)?
这里需要先ssh登录机器确认 --key-deploy是第一次执行把公钥放到客户机上
[root@KXLZQ ~]# salt-ssh --key-deploy '
’ -r ‘hostname’
XXQ:
retcode:
stderr:
stdout:
XXQ
KXLZQ:
retcode:
stderr:
stdout:
KXLZQ
ssh认证成功之后可以把配置文件中密码行给删除
[root@KXLZQ ~]# vim /etc/salt/roster
删除密码:
KXLZQ:
host: 192.168.70.128
user: root
XXQ:
host: 192.168.70.129
user: root
通过salt-ssh直接使用命令
[root@KXLZQ ~]# salt-ssh ‘*’ -r ‘w’
XXQ:
retcode:
0
stderr:
stdout:
15:16:49 up 4:08, 1 user, load average: 0.00, 0.01, 0.05
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
root pts/0 192.168.70.1 11:18 2:55m 0.04s 0.04s -bash
KXLZQ:
retcode:
0
stderr:
stdout:
15:16:49 up 4:08, 1 user, load average: 0.32, 0.16, 0.08
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
root pts/0 192.168.70.1 11:18 1.00s 0.71s 0.01s /usr/bin/python /usr/bin/salt-ssh * -r w

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值