设为首页 收藏本站
查看: 1551|回复: 0

[经验分享] salt的使用

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2016-3-2 08:47:06 | 显示全部楼层 |阅读模式
salt-net-api
获取tocken
1.curl -k http://127.0.0.1:8000/login -H "Accept: application/x-yaml" -d username="saltapi" -d password="abc/123" -d eauth='pam'

2.curl -k http://192.168.10.169:8000/ -H "Accept: application/x-yaml" -H "X-Auth-Token: 55c539c0b9af9a6a4f1c25f5793823862d07eb91" -d client='local' -d tgt='*' -d fun='cmd.run' -d arg='cp /etc/hosts /opt/'




salt '*' test.ping
'*':目标
test 模块
ping 函数

定义目标
'*'
salt -E 'web1-(prod|devel).example.com'
-E 代表用正则
salt -L ''
-L 代表列表


salt -E '(node1|node2).example.com' test.ping



granins
数据,存放在minoins上默认就有

salt 'node1.example.com' grains.(ls|items)
granins相当于facter,获取机器信息的

salt -G 'os:centos' test.ping
如果系统是centos,执行test.ping

granins也可以添加自定义项,在客户端的/etc/salt/minoins配置文件中granins添加


群组
mater nodegroups
salt -N 'web1' test.ping
-N指定组 组名

salt '*' -b 1 test.ping
-b分批次执行

salt '*' -b 50% test.ping
分50%执行


使用对应的模块名
/usr/lib/python/site-package/salt/modules/test.py
函数是ping
salt master就是告诉客户端做什么事
test.ping(实在minoins上执行的)

salt 'node3' cmd.run 'uptime'
cmd.run后面跟执行的命令

salt文件跟路径/srv/salt/


客户端执行test.sh脚本
在master上/srv/salt/test.sh
执行salt 'node' cmd.script salt://test.sh


state命令的组织结构,/src/salt/
top.sls
base: 环境
        '*':
                - apache_install
/src/salt/apache_install/init.sls
httpd: #id
  pkg:   #states
    - installed

salt 'node1' state.highstate    找top.sls接口文件处理
salt 'node1' state.sls httpd    找httpd.sls处理

/src/salt/apache_install/init.sls
httpd: #id
  pkg:
    - installed
  service:
    - running
    - require:
      - pkg: httpd


salt 'node1' state.sls httpd
指定执行某一个sls文件例如httpd.sls


httpd: #id
  pkg:
    - installed
  service:source
    - running
    - require:
      - pkg: httpd
    - watch:
      - file: /etc/httpd/conf/httpd.conf
/etc/httpd/conf/httpd.conf:
  file:
    - managed
    - source: salt://httpd.conf
    - require:
      - pkg: httpd

apache:
  pkg.installed:
  {%if granins('os') == 'CentOS' %}
  - name: httpd
  {%else%}
  - name: apache2
  {%endif%}

salt 'node1' file.group_to_gid root


f:
  user:
    - present
    - gid: {{salt['file.group_to_gid']('root')}}
调用salt模块,获取相关信息file等于 /usr/lib/python/site-package/salt/modules/file.py



pillar
salt '*' pillar.items
/srv/pillar
top.sls   #入口文件
base:
  '*':
    - data   #定义的数据文件data.sls data/init.sls
    - users

/srv/pillar/data.sls
/srv/pillar/users.sls
users:
        th: 1000
        sh: 1001
        ut: 1002


salt '*' saltutil.refresh.pillar   同步pillar信息       
salt ‘*’




pillar 下发用户信息
在所有的minion上添加3个用户
1
#pillar_roots:
#  base:
#    - /srv/pillar

master reboot

2 cd /srv/pillar
2.1 vim top.sls #决定把pillar信息下发给谁
base:
  '*':
    - data #下面定义的数据文件data.sls 或者 data/init.sls
    - users #同上

[iyunv@node1 pillar]# cat users.sls

users:
  th: 1000
  sh: 1001
  ut: 1002

3 [iyunv@node1 pillar]# salt '*' saltutil.refresh_pillar
验证 salt '*' pillar.items | grep users

4 调用pillar信息
cd /srv/salt #进入到state的目录
[iyunv@node1 salt]# cat mxl.sls
{% for user, uid in pillar.get('users', {}).items() %}
{{user}}:
  user.present:
    - uid: {{uid}}
{% endfor%}

5 执行      
[iyunv@node1 salt]# salt 'node2' state.sls mxl



include:
  - dhcp.python-libs

dhcp:
  pkg.installed:
    - require:
      - pkg: python-dateutil

python-libs.sls          
python-dateutil:
  pkg.installed



job
        name: The same value passed to the state as "name".
        changes: A dict describing the changes made. Each thing changed should be a key, with its value being another dict with keys called "old" and "new" containing the old/new values. For example, the pkg state's changes dict has one key for each package changed, with the "old" and "new" keys in its sub-dict containing the old and new versions of the package.
        result: A boolean value. True if the action was successful, otherwise False.
        comment: A string containing a summary of the result.


pip install MySQLdb

CREATE DATABASE  `salt`
      DEFAULT CHARACTER SET utf8
      DEFAULT COLLATE utf8_general_ci;

USE `salt`;

    --
    -- Table structure for table `jids`
    --

    DROP TABLE IF EXISTS `jids`;
    CREATE TABLE `jids` (
      `jid` varchar(255) NOT NULL,
      `load` mediumtext NOT NULL,
      UNIQUE KEY `jid` (`jid`)
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8;

    -- Table structure for table `salt_returns`
    --

    DROP TABLE IF EXISTS `salt_returns`;
    CREATE TABLE `salt_returns` (
      `fun` varchar(50) NOT NULL,
      `jid` varchar(255) NOT NULL,
      `return` mediumtext NOT NULL,
      `id` varchar(255) NOT NULL,
      `success` varchar(10) NOT NULL,
      `full_ret` mediumtext NOT NULL,
      `alter_time` TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
      KEY `id` (`id`),
      KEY `jid` (`jid`),
      KEY `fun` (`fun`)
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8;

编辑minion上的配置文件并修改相关的mysql信息

mysql.host: '10.255.254.221'
mysql.user: 'salt'
mysql.pass: '123'
mysql.db: 'salt'
mysql.port: 3306

这步最好测试一下
mysql -u salt -p123 -h 10.255.254.221 salt

重新启动你的minion
service salt-minion restart
测试
salt '*' test.ping --return mysql
查看数据库获得信息
fun: test.ping
       jid: 20150322123606281679
    return: true
        id: node2
   success: 1
  full_ret: {"fun_args": [], "jid": "20150322123606281679", "return": true, "retcode": 0, "success": true, "fun": "test.ping", "id": "node2"}
alter_time: 2015-03-22 12:36:06


job管理
1.list_jobs running Returns the data of all running jobs that are found in the proc directory.
2.find_job Returns specific data about a certain job based on job id.
3.signal_job Allows for a given jid to be sent a signal.
4.term_job Sends a termination signal (SIGTERM, 15) to the process controlling the specified job.
5.kill_job Sends a kill signal (SIGKILL, 9) to the process controlling the specified job.

salt-run jobs.active
salt-run jobs.lookup_jid <job id number>
salt-run jobs.list_jobs


反射
观察event
salt-call
Tag: new_job
Data:
{'_stamp': '2015-03-22T13:36:26.412296',
'arg': [],
'fun': 'test.ping',
'jid': '20150322133626411925',
'minions': ['node2'],
'tgt': 'node2',
'tgt_type': 'glob',
'user': 'root'}
Event fired at Sun Mar 22 13:36:26 2015
*************************

Tag
Data

编辑master的配置文件
reactor:
  -  'salt/job/*/ret/node3':
     - /srv/reactor/start.sls

vim /srv/reactor/start.sls
{% if data['fun'] == 'test.ping' %}
clean_tmp:
  cmd.run:
    - tgt: 'node3'
    - arg:
      - rm -fr /tmp/abc
{% endif %}

以上语句相当于
cmd.run 'node3' 'rm -fr /tmp/abc'

重启你的master
测试
salt '*' test.ping
查看node3上面的文件是否被删除

haproxy 模块使用安装
M2Crypto
pip uninstall PyCrypto
pip install PyCrypto
cd /usr/lib/python2.6/site-packages/
rm -fr salt salt-2014.1.4-py2.6.egg-info/
pip install salt



运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-185153-1-1.html 上篇帖子: saltsatck超全配置 下篇帖子: salt结合crontab自动同步配置文件
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表