Salt安装与基本操作

阅读更多

 

1 rpm centos中的安装包格式 ,相当于windows中的exe文件

2 yum是centos中方便的rpm仓库以及提供方便的安装方法,不但可以安装而且可以安装相应的依赖

3 /etc/yum.conf 是yum源的配置文件

4 /etc/yum.repo.d/xx.repo是yum源的仓库,安装文件的时候会根据配置下载安装包和相应的依赖包,然后安装

5 epel,安装后会产生yum源仓库的repo文件

6 yum源自行更换:下载repo文件,删除原来的repo文件 清理原来的缓存重新生成:1)yum clean all 2)yum makecache

 

安装:yum install 。。

升级所有软件包:yum update 

升级某个软件包:yum update tomcat

检查可更新的程序:yum check-update

显示已经安装:yum list installed

查找可以安装:yum list tomcat

卸载:yum remove tomcat

列出依赖:yum deplist tomcat

显示信息:yum info tomcat

 

 

 

 

查看是否安装:rpm -qa | grep subscription

删除:rpm -e file.rpm

安装:rpm -qa | grep salt-master

 

 

 

 

==========

salt的安装参考:https://my.oschina.net/u/3314358/blog/1839063

 

自定义service:/lib/systemd/system

 

一、启动与重启:

systemctl start salt-master 

systemctl start salt-minion

systemctl restart salt-minion

systemctl status salt-minion

 

二、目录:/etc/salt/

日志目录:/var/log/salt

 

三、重新认证:

1、清空minion_id:/etc/salt/minion_id

2.删除minion存放masterkey的文件pki文件夹下所以的东西 :rm -rf /etc/salt/pki/*

3.重启minion

4.在master端:删除pki文件之后,重启即可 rm -rf /etc/salt/pki/* & service salt-master restart

 

四、查看端口,看salt是否启动成功

netstat -antlp|grep 4506

五、master上查看连接到的minion: salt-key -L

 

六、常用命令

1)salt 该命令执行salt的执行模块,通常在master端运行,也是我们最常用到的命令

salt [options] '' [arguments]

如: salt '*' test.ping (校验master与minion的连接情况)

2)salt-run 该命令执行runner(salt带的或者自定义的,runner以后会讲),通常在master端执行,比如经常用到的manage

salt-run [options] [runner.func]

salt-run manage.status ##查看所有minion状态

salt-run manage.down ##查看所有没在线minion

salt-run manged.up  ##查看所有在线minion

3)salt-key 密钥管理,通常在master端执行 

salt-key [options]

salt-key -L##查看所有minion-key,安装完成的时候用这个命令确定master有几个minion连接成功

salt-key -a ##接受某个minion-key(如果没有master和minion自动秘钥认证,则需要调用这个手动认证)

salt-key -d ##删除某个minion-key

salt-key -A##接受所有的minion-key

salt-key -D##删除所有的minion-key

说明:-a :accept ,-A:accept-all,-d:delete,-D:delete-all

 

4)salt-call 该命令通常在minion上执行,minion自己执行可执行模块,不是通过master下发job

salt-call [options] [arguments]

salt-call test.ping ##自己执行test.ping命令

salt-call cmd.run 'ifconfig' ##自己执行cmd.run函数

 

5)salt-cp 分发文件到minion上,不支持目录分发,通常在master运行

salt-cp [options] '' SOURCE DEST

salt-cp '*' testfile.html /tmp

salt-cp 'test*' index.html /tmp/a.html

 

6)salt-ssh 0.17.1版本加入的salt-ssh

7)salt-master master运行命令

salt-master [options]

salt-master ##前台运行master

salt-master -d##后台运行master

salt-master -l debug  ##前台debug输出

 

七、sls文件(个人理解:是yaml的模板文件,也可以使用jinja动态生成模板,然后通过yaml解析后生成一定的数据结构给salt使用)

1. sls文件本质上是python嵌套字典(键值对),由salt-master以广播的形式传递给salt-minion,通过sls文件告知使用哪个模块的哪个函数,参数有哪些,在salt-minion一侧进行函数调用

2. 冒号':' 用来分隔键和值, 冒号:与后面的单词如果在一行,一定要有一个空格, 一个单词后面是否有冒号:取决于这个单词是否是key, 后面是否有值或者是嵌套的内容

 短横杠 - 表示这项是个列表项, 短横杠与后面的单词有一个空格

 缩进: 本层与下一层要有缩进, 缩进不能用tab, 一般是两个空格. 相同一缩进表示相同的层级

 

 

八、Module 模块使用(模块之间调用:可以通过 __salt__['模块.函数']('函数参数'),调用其他的模块)

1)开启配置Module的目录:module_dirs : ['/srv/salt/_modules']

2)定义的目录中创建Module,python的文件

3)同步Module到minion上:salt '*' saltutil.sync_modules

4)执行Module:salt '*' zhou.zhou zyy参数

5)Module中使用全局字典,grains,pillar,salt

    grain = __grains__['chengge']

    # 通过salt默认的一个字典__grains__,你想去哪个grain的时候,使用 __grains__['Id']

    pillar = __pillar__['group']

    # pillar 和 grains 一个样,__pillar__['Id']

    result = __salt__['cmd.run'](args)

    # __salt__['模块.函数']('函数参数')

 

6)同步模块到minion的3中方式

salt '*' state.highstate

salt '*' saltutil.sync_all

salt '*' saltutil.sync_modules

 

 

 

九、Runner 模块使用(Runner直接在master上执行,不需要同步到minion上在执行)

1)开启配置文件,定义Runner的目录,runner_dirs: []

2)目录中创建python的runner文件

3) 执行Runner模块: salt-run lsdir.lsdir home

 

 

十、 Grins 模块(grains一些静态的客户端数据的定义)

作用:grains 主要负责采集客户端一些基本信息,可以客户端自定义然后汇报到master上,也可以服务器定义同步到客户端,然后在汇报上来

   可以在Module的模块中调用

1)打印所有的items: salt '*' grains.items

2)列出所有的items:salt '*' grains.ls

3) 查看单个的items:salt '*' grains.item shell

 

十一、Pillar模块,jinja2为python前端展示的模板引擎,逻辑判断的功能都是有的

1)pillar数据定义用sls文件,文件目录位置配置文件中:pillar_roots 

2)入口文件:top.sls,salt加载需要通过这个文件进行加载

3)定义完成数据文件需要同步到minion中:salt '*' saltutil.refresh_pillar,如果不生效可以重启master在次同步数据

4)查看所有的pillar数据:salt '*' pillar.data

5)查看某个pillar数据:salt '*' pillar.data minionname

6)其他python文件中使用:如:pillar['appname'] 

    state 和模板文件中引用,模板格式变量为 {{ pillar变量 }}如:{{ pillar['flow']['maxconn'] }} 

 

7)结合grains获取客户端的ip如: ip : {{ grains['ipv4'][0] }},放到sls文件中,可以获取客户端ip信息:salt \* pillar.data ip

 

十二、 cmd模块,在集群汇总统一执行shell命令:salt '*' cmd.run 'df -h'

十三、 ping模块,执行ping命令: salt '*' test.ping -t 5  

十四、cp模块,作用: cp 模块由 Salt 状态系统 salt-cp 使用,可用于分发 Salt 文件服务器提供的文件

十五、 cron模块,定时执行某个文件

salt '*' cron.raw_cron root     (查看定时任务)

salt '*' cron.set_job root '*' '*' '*' '*' 1 /export/scripts/rm_log.sh 

salt '*' cron.rm_job root /export/scripts/rm_log.sh   (写全没效果)

十六、dnsutil模块,实现被控制主机本地域名文件操作

1)添加 salt 'centos02' dnsutil.hosts_append /etc/hosts 127.0.0.1 www.test.com

2)删除 salt 'centos02' dnsutil.hosts_remove /etc/hosts www.test.com

3)api调用 client.cmd('*', 'dnsutil.hosts_append',['/etc/hosts','127.0.0.1','www.test.com'])

十七、file模块,实现被控主机常见文件操作

十八、network模块,返回被控主机的网络信息

salt '*' network.dig www.qq.com

salt '*' network.ping www.qq.com

salt '*' network.ip_addrs

 

十九、pkg模块,被控主机程序包管理,如yum、apt-get等

# 管理yum, apt-get等

salt '*' pkg.install php

salt '*' pkg.remove php

salt '*' pkg.upgrade    (升级所有的软件包)

二十、service模块

salt '*' service.enable nginx

salt '*' service.disable nginx

salt '*' service.restart nginx

 

 

 

 

 

salt-api安装使用

https://www.jianshu.com/p/fdfa8ee1840a

https://cizixs.com/2015/03/24/salt-api-usage

 

 

 

 

 

 

 

 

 

你可能感兴趣的:(Salt)