saltstack这货居然是用python2.6写的,费了好大的劲,才弄出来用python调用它.首先安装好salt-master(或者salt-minion),然后输入下面的命令:
# python2.6
>>> import salt.config
没有错误. 那么接下来就可以用python调用salt的api干活了.
1. 同步文件
slatsatck用于同步master上的配置文件到minion节点,首先在master上增加设置:
# mkdir -p /srv/salt/dev/services /srv/salt/dev/states /srv/salt/prod/services /srv/salt/prod/services # mkdir /etc/salt/master.d/ # vi fileserver.conf # service salt-master restart
fileserver.conf内容如下:
#### fileserver.conf # Salt runs a lightweight file server written in zeromq to deliver files to # minions. This file server is built into the master daemon and does not # require a dedicated port. file_roots: base: - /srv/salt/ dev: - /srv/salt/dev/services - /srv/salt/dev/states prod: - /srv/salt/prod/services - /srv/salt/prod/states
# salt ‘*‘ cp.get_file salt://first.xml /tmp/first.xml 或 gzip=1-9,数字越大,压缩越高; makedirs=True 自动创建目录 # salt ‘*‘ cp.get_file salt://first.xml /tmp/salt/first.xml gzip=9 makedirs=True
这样我们就可以用脚本灵活控制服务器端(master)的配置文件的分发。
2. grains
1) grains的作用是在minion端的服务启动时,调用这个接口,收集minion端的信息,这些信息数据可以在salt的其他模块中直接使用,需要注意的是,这个接口只在minion端的minion服务启动时被调用一次,所以收集的数据是静态的,不会改变的,除非你重启了minion端的服务. 在master上执行下面的命令(202是minion节点id)收集minion端的信息:
# salt '202' grains.ls
显示:
- SSDs - biosreleasedate - biosversion - cpu_flags - cpu_model - cpuarch - domain - fqdn - fqdn_ip4 ...
2) 使用grains.items模块列出所有可用grains的具体数据:
# salt '202' grains.items3) 查看所有节点的IP地址:
# salt ‘*‘ grains.item ipv4 # NOT grains.items
4) 查看202的os版本:
# salt ‘202‘ grains.item os
3. 目录同步
cp.get_dir,get_dir与get_file的用法十分相似,用来将整个目录分发到minions. 本例在master的/srv/salt下创建目录和文件:
/srv/salt/hadoop_conf_dir/hadoop.config, 同步到所有minion节点的/tmp/hacl_conf下面, 如果目录不存在则创建,使用压缩
# salt ‘*‘ cp.get_dir salt://hadoop_conf_dir /tmp/hacl_conf gzip=9 makedirs=True
这样,minion上为:
/tmp/hacl_conf/hadoop_conf_dir/hadoop.config
4. pillar接口
TODO:
##############################