Salt-Stack从salt master复制文件python API到特定的minion

我正在使用CentOS6.5。 我可以通过在主服务器上运行以下命令成功地将一个文件从主服务器复制到使用id = minionId的服务器上:

salt minionId cp.get_file salt://fileInMaster.txt /home/johnDoe/fileNowInMinion.txt ##run on master 

如果我必须使用python完成同样的事情,我该怎么做呢? 在这个链接之后,我发现所有的方法都是通过在脚本上运行脚本来将文件从主文件复制到副本文件。 我想在master上运行一个python脚本,它使用给定的id将一个文件从master复制到一个特定的minion

使用Python客户端API,或安装并运行公开REST API的salt-api。 我将详细介绍Python客户端API: http : //salt.readthedocs.org/en/v2014.1.13/ref/clients/index.html

脚本totin.py,将/srv/salt/vim/vimrc.local复制到tin:/tmp/vimrc.local

 #!/usr/bin/env python import json import salt.client minion = 'tin' source = 'salt://vim/vimrc.local' target = '/tmp/vimrc.local' local = salt.client.LocalClient() ret = local.cmd('tin', 'cp.get_file', [source, target]) print json.dumps(ret, indent=2) 

testing:

 $ sudo python totin.py { "tin": "/tmp/vimrc.local" } 

校验:

 $ sudo salt tin cmd.run 'ls -l /tmp/vimrc.local' tin: -rw-r--r-- 1 root root 652 Dec 4 20:45 /tmp/vimrc.local 

您可以使用pexpect或某个shell调用模块(os.system,subprocess.call等)将您的salt命令封装在python中。