94.管理目录、远程命令、任务计划 其他命令 salt-ssh

24.10 配置管理目录

24.11 配置管理远程命令(使用shell脚本)

24.12 配置管理计划任务

24.13 其他命令

24.14 salt-ssh使用

 

 

 

 

24.10 配置管理目录

 

 

1.master上vi /srv/salt/test_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 //加上它之后,源删除文件或目录,目标也会跟着删除,否则不会删除

2.修改top.sls, vi /srv/salt/top.sls //改为如下内容

base:

'*':

- test_dir

3.执行: salt 'aming-02' state.highstate

4.检查aming-02上是否有/tmp/testdir,检查里面的目录、文件以及权限

!!说明:这里有一个问题,如果source对应的目录里有空目录的话,客户端上不会创建该目录!!

 

实例:

[root@axinlinux-01 salt]# vim test_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

[root@axinlinux-02 ~]# ls -l /tmp/testdir/ #minion上查看一下

总用量 4

-rw-r----- 1 root root 511 12月 7 23:04 1.txt

[root@axinlinux-01 test]# mkdir abc #做这些操作

[root@axinlinux-01 test]# touch 1.txt

[root@axinlinux-01 test]# rm -rf 123/

[root@axinlinux-01 test]# salt 'axinlinux-02' state.highstate #结果报错了

因为我们配置了123目录下的作为分发,删除abc目录,就会报错

[root@axinlinux-01 salt]# mkdir test/123 #那我们在创建123目录

[root@axinlinux-01 salt]# mv test/abc test/1.txt test/123/ #再把abc目录和123文件拷过来,相当于做了修改

[root@axinlinux-01 salt]# salt 'axinlinux-02' state.highstate #在更新

[root@axinlinux-02 ~]# ls /tmp/testdir/ #发现minion上并没有我们在master上创建的abc目录

1.txt

#这是因为,abc目录为空,他默认空目录不做同步更新。所以要在abc目录下touch一个文件,哪怕是空文件

[root@axinlinux-01 salt]# touch test/123/abc/2.txt #我们在abc目录下touch一个2.txt

[root@axinlinux-02 ~]# tree /tmp/testdir/ #到minion上就有了

/tmp/testdir/

├── 1.txt

├── 321

└── abc

└── 2.txt

 

 

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

 

 

 

24.11 配置管理远程命令(使用shell脚本)

 

 

在salt上设置一个脚本,在minion上执行这个脚本(多条命令)

1.master上vi /srv/salt/shell_test.sls //加入如下内容

shell_test:

cmd.script: #用到的模块名

- source: salt://test/1.sh #就是我们要执行的shell脚本

- user: root #执行的用户是谁

2.vi /srv/salt/test/1.sh //加入如下内容

#!/bin/bash

touch /tmp/111.txt

if [ ! -d /tmp/1233 ]

then

mkdir /tmp/1233

fi

3.更改top.sls内容

base:

'*':

- shell_test

4.执行: salt 'aming-02' state.highstate

5.检查是否有/tmp/111.txt和/tmp/1233

 

 

实例:

[root@axinlinux-01 salt]# vim shell_test.sls

shell_test:

cmd.script:

- source: salt://test/1.sh

- user: root

[root@axinlinux-01 salt]# vim test/1.sh

#!/bin/bash

touch /tmp/111.txt

if [ ! -d /tmp/1233 ]

then

mkdir /tmp/1233

fi

[root@axinlinux-01 salt]# vim top.sls

base:

'*':

- shell_test

[root@axinlinux-01 salt]# salt 'axinlinux-02' state.highstate

[root@axinlinux-02 ~]# ls -l /tmp/ #minion上查看一下

总用量 4

-rw-r--r-- 1 root root 0 12月 7 23:53 111.txt

drwxr-xr-x 2 root root 6 12月 7 23:53 1233

 

 

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

 

 

 

24.12 配置管理计划任务

 

 

 

1.master上vi /srv/salt/cron_test.sls //加入如下内容

cron_test:

cron.present:

- name: /bin/touch /tmp/111.txt #要执行的命令

- user: root #用户

- minute: '*' #分

- hour: 20 #时

- daymonth: '*' #日

- month: '*' #月

- dayweek: '*' #周

注意,*需要用单引号引起来。当然我们还可以使用file.managed模块来管理cron,因为系统的cron都是以配置文件的形式存在的。想要删除该cron,需要改为:

cron.absent:

- name: /bin/touch /tmp/111.txt

两者不能共存,要想删除一个cron,那之前的present模块(包含内容)就得去掉。

2.更改top.sls

base:

'*':

- cron_test

3.执行: salt 'aming-02' state.highstate

4.到aming-02上检查cron,会看到提示# Lines below here are managed by Salt, do not edit

5.我们不能随意改动它,否则就没法删除或者修改这个cron了。

 

 

实例:

[root@axinlinux-01 salt]# vim cron_test.sls

cron_test:

cron.present:

- name: /bin/touch /tmp/111.txt

- user: root

- minute: '*'

- hour: 20

- daymonth: '*'

- month: '*'

- dayweek: '*'

[root@axinlinux-01 salt]# vim top.sls

base:

'*':

- cron_test

[root@axinlinux-01 salt]# salt 'axinlinux-02' state.highstate

[root@axinlinux-02 ~]# crontab -l #minion上查看一下crontab

# Lines below here are managed by Salt, do not edit #这两行不要改,不然没办法修改或删除了

# SALT_CRON_IDENTIFIER:/bin/touch /tmp/111.txt

* 20 * * * /bin/touch /tmp/111.txt

[root@axinlinux-01 salt]# vim cron_test.sls #比如我们改个时间

cron_test:

cron.present:

- name: /bin/touch /tmp/111.txt

- user: root

- minute: 59 #改为59分

- hour: 20

- daymonth: '*'

- month: '*'

- dayweek: '*'

[root@axinlinux-01 salt]# salt 'axinlinux-02' state.highstate

[root@axinlinux-02 ~]# crontab -l #再次查看crontab就改变了

# Lines below here are managed by Salt, do not edit

# SALT_CRON_IDENTIFIER:/bin/touch /tmp/111.txt

59 20 * * * /bin/touch /tmp/111.txt

然后删除这个cron

[root@axinlinux-01 salt]# vim cron_test.sls

cron_test:

cron.absent:

- name: /bin/touch /tmp/111.txt

[root@axinlinux-01 salt]# salt 'axinlinux-02' state.highstate

[root@axinlinux-02 ~]# crontab -l #minion上查看就没有了

# Lines below here are managed by Salt, do not edit

 

 

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

 

 

 

24.13 其他命令

 

 

1.cp.get_file 拷贝master上的文件到客户端

salt '*' cp.get_file salt://test/1.txt /tmp/123.txt

2.cp.get_dir 拷贝目录

salt '*' cp.get_dir salt://test/conf /tmp/ //会自动在客户端创建conf目录,所以后面不要加conf,如果写成 /tmp/conf/ 则会在/tmp/conf/目录下又创建conf

3.salt-run manage.up 显示存活的minion

4.salt '*' cmd.script salt://test/1.sh 命令行下执行master上的shell脚本

 

 

实例:

1.

[root@axinlinux-01 salt]# salt '*' cp.get_file salt://test/1.txt /tmp/123.txt #报错,因为test目录下没有1.txt

[root@axinlinux-01 salt]# cp /etc/passwd /srv/salt/test/1.txt #搞一个过来

[root@axinlinux-01 salt]# salt '*' cp.get_file salt://test/1.txt /tmp/123.txt

axinlinux-02:

/tmp/123.txt

axinlinux-01:

Minion did not return. [Not connected] #再次报错。因为master上的minion服务没开启

[root@axinlinux-01 salt]# systemctl start salt-minion #开启master上的minion

[root@axinlinux-01 salt]# salt '*' cp.get_file salt://test/1.txt /tmp/123.txt

[root@axinlinux-01 salt]# ls -l /tmp/123.txt #查看一下

-rw-r--r-- 1 root root 2374 12月 8 00:34 /tmp/123.txt

2.

[root@axinlinux-01 salt]# salt '*' cp.get_dir salt://test/conf /tmp/ #报错,因为test目录下没有conf目录

axinlinux-02:

axinlinux-01:

[root@axinlinux-01 salt]# ls test #看一下test目录

123 1.sh 1.txt

[root@axinlinux-01 salt]# salt '*' cp.get_dir salt://test/123 /tmp/ #再次执行

axinlinux-01:

- /tmp//123/1.txt

- /tmp//123/321

- /tmp//123/abc/2.txt

axinlinux-02:

- /tmp//123/1.txt

- /tmp//123/321

- /tmp//123/abc/2.txt

[root@axinlinux-01 salt]# ls -l /tmp/123 #目录下的而所有都拷过来了

总用量 0

-rw-r--r-- 1 root root 0 12月 8 00:39 1.txt

-rw-r--r-- 1 root root 0 12月 8 00:39 321

drwxr-xr-x 2 root root 19 12月 8 00:39 abc

[root@axinlinux-01 salt]# ls -dl /tmp/123 #查看123目录本身

drwxr-xr-x 3 root root 41 12月 8 00:39 /tmp/123

3.

[root@axinlinux-01 salt]# salt-run manage.up

- axinlinux-01

- axinlinux-02

4.

[root@axinlinux-01 salt]# salt '*' cmd.script salt://test/1.sh

axinlinux-02:

----------

pid:

8258

retcode:

0

stderr:

stdout:

axinlinux-01:

----------

pid:

13087

retcode:

0

stderr:

stdout:

 

 

 

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

 

 

 

24.14 salt-ssh使用

 

 

 

1.salt-ssh不需要对客户端做认证,客户端也不用安装salt-minion,它类似pssh/expect

#自动的更改公钥

#第一次需要输入密码(/etc/salt/roster文件里定义或手动先ssh一下),第二次就不需要了

2.安装很简单yum install -y https://repo.saltstack.com/yum/redhat/salt-repo-latest-2.el7.noarch.rpm

3.yum install -y salt-ssh

4.vi /etc/salt/roster //增加如下内容 #salt-ssh需要的配置文件

axinlinux-01: #注意冒号

host: 192.168.208.128

user: root #因为这里是root,所以也不需要定义sudo了

passwd: wangxin789

axinlinux-02:

host: 192.168.208.130

user: root

passwd: wangxin789

5.salt-ssh --key-deploy '*' -r 'w' #执行的命令是w

//第一次执行的时候(--key-deploy)会自动把本机的公钥放到对方机器上,然后就可以把roster里面的密码去掉

 

 

 

实例:

[root@axinlinux-01 salt]# yum install -y https://repo.saltstack.com/yum/redhat/salt-repo-latest-2.el7.noarch.rpm #已经安装过了,就不用安装了。直接安装salt-ssh就可以了

[root@axinlinux-01 salt]# yum install -y salt-ssh

[root@axinlinux-01 salt]# vim /etc/salt/roster

axinlinux-01:

host: 192.168.208.128

user: root

passwd: wangxin789

axinlinux-02:

host: 192.168.208.130

user: root

passwd: wangxin789

[root@axinlinux-01 salt]# salt-ssh --key-deploy '*' -r 'w'

axinlinux-02:

----------

retcode:

0

stderr:

stdout:

root@192.168.208.130's password:

01:02:36 up 2:52, 1 user, load average: 0.00, 0.01, 0.05

USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT

root pts/0 192.168.208.1 22:20 32:36 0.10s 0.10s -bash

axinlinux-01:

----------

retcode:

0

stderr:

stdout:

01:02:36 up 2:52, 1 user, load average: 0.09, 0.13, 0.11

USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT

root pts/0 192.168.208.1 22:20 4.00s 2.00s 0.03s /usr/bin/python /usr/bin/salt-ssh --key-deploy * -r w

[root@axinlinux-01 salt]# ls -l /root/.ssh/authorized_keys #他能自动的更改公钥,来检查一下更改时间

-rw-r--r--. 1 root root 1219 12月 8 00:55 /root/.ssh/authorized_keys

[root@axinlinux-01 salt]# date

2018年 12月 08日 星期六 01:03:42 CST

[root@axinlinux-01 salt]# vim /etc/salt/roster #将密码删掉,让他用密钥登录执行

axinlinux-01:

host: 192.168.208.128

user: root

axinlinux-02:

host: 192.168.208.130

user: root

[root@axinlinux-01 salt]# salt-ssh --key-deploy '*' -r 'w' #也是可以的

 

 

 

 

 

 

 

 

 

 

转载于:https://my.oschina.net/u/3866149/blog/3030848

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
目录 1. 引言.............................................................................................................................................1 1.1 目的...................................................................................................................................1 1.2 术语定义............................................................................................................................1 1.3 参考资料............................................................................................................................1 2. 软件配置.....................................................................................................................................2 2.1 软件配置环境....................................................................................................................2 2.2 软件配置项........................................................................................................................2 2.3 配置管理员........................................................................................................................3 3. 软件配置管理计划......................................................................................................................4 3.1 建立示例配置库................................................................................................................4 3.2 配置标识管理....................................................................................................................6 3.3 配置库控制........................................................................................................................7 3.4 配置的检查和评审............................................................................................................8 3.5 配置库的备份....................................................................................................................9 3.6 配置管理计划的修订........................................................................................................9 3.7 配置管理计划附属文档....................................................................................................9 4. 里程碑.......................................................................................................................................11 附录1 文档命名规定....................................................................................................................12 1、受控配置库文件命名规则...............................................................................................12 2、非受控配置库文件命名规则...........................................................................................12 3、提交文档文件命名规则...................................................................................................12 附录2 文档编码规范....................................................................................................................13 附录3 帐号及权限管理................................................................................................................14 附录4 配置库使用规定................................................................................................................16 文档修改记录................................................................................................................................17

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值