天天看点

Saltstack-Salt常用模块及API

Salt提供了非常丰富的功能模块,涉及操作系统的基础功能、常用工具支持等,可以通过sys模块列出当前版本支持的模块。

<code>salt </code><code>'*'</code> <code>sys.list_modules</code>

<code>781915e2:</code>

<code> </code><code>- acl</code>

<code> </code><code>- aliases</code>

<code> </code><code>- alternatives</code>

<code> </code><code>- apache</code>

<code> </code><code>- archive</code>

<code> </code><code>- artifactory</code>

<code> </code><code>- at</code>

<code> </code><code>- blockdev</code>

<code> </code><code>- btrfs</code>

<code> </code><code>- buildout</code>

<code> </code><code>- cloud</code>

<code> </code><code>- cmd</code>

<code>......</code>

API的原理是通过调用master client模块,实例化一个LocalClient对象,再调用cmd()方法来实现的。

API实现test.ping示例:

<code>&gt;&gt;&gt; </code><code>import</code> <code>salt.client</code>

<code>&gt;&gt;&gt; client </code><code>=</code> <code>salt.client.LocalClient()</code>

<code>&gt;&gt;&gt; ret </code><code>=</code> <code>client.cmd(</code><code>'*'</code><code>,</code><code>'test.ping'</code><code>)</code>

<code>&gt;&gt;&gt; </code><code>print</code> <code>ret</code>

<code>{</code><code>'781915e2'</code><code>: </code><code>True</code><code>}      </code><code>#结果以一个标准的Python字典形式的字符串返回,可以通过eval()函数转换成Python的字典类型,方便后续的业务逻辑处理</code>

(1)Archive模块

功能:实现系统层面的压缩包调用,支持gunzip、gzip、rar、tar、unrar、unzip等。

示例:

<code>salt </code><code>'781915e2'</code> <code>cmd.run </code><code>'mkdir /opt/test'</code>   <code>#为被控端minion创建/opt/test目录</code>

<code>    </code> 

<code>scp</code> <code>test</code><code>.txt.gz root@kurol:</code><code>/opt/test</code>    <code>#将测试的gzip文件拷贝给被控端minion</code>

<code>salt </code><code>'781915e2'</code> <code>archive.gunzip </code><code>/opt/test/test</code><code>.txt.gz    </code><code>#解压被控端/opt/test/test.txt.gz文件</code>

<code>salt </code><code>'781915e2'</code> <code>archive.</code><code>gzip</code> <code>/opt/test/test</code><code>.txt     </code><code>#压缩</code>

API调用:

<code>&gt;&gt;&gt; client.cmd(</code><code>'*'</code><code>,</code><code>'archive.gunzip'</code><code>,[</code><code>'/opt/test/test.txt.gz'</code><code>])</code>

<code>{</code><code>'781915e2'</code><code>: []}</code>

 (2)cmd模块

功能:实现远程的命令行调用执行(默认具备root操作权限,使用时需评估风险)

<code>[root@server ~]</code><code># salt '*' cmd.run "free -m"</code>

<code>                 </code><code>total       used       </code><code>free</code>     <code>shared    buffers     cached</code>

<code>    </code><code>Mem:           996        834        162          0        121        252</code>

<code>    </code><code>-/+ buffers</code><code>/cache</code><code>:        460        536</code>

<code>    </code><code>Swap:            0          0          0</code>

 API调用:

<code>client.cmd(</code><code>'*'</code><code>,</code><code>'cmd.run'</code><code>,['free </code><code>-</code><code>m])</code>

(3)cp模块

功能:实现远程文件、目录的复制,以及下载URL文件等操作。

<code>salt </code><code>'*'</code> <code>cp</code><code>.cache_local_file </code><code>/etc/hosts</code>     <code>#将指定被控主机的/etc/hosts文件复制到被控主机本地的salt cache目录(/var/cache/salt/minion/localfiles)</code>

<code> </code><code>/var/cache/salt/minion/localfiles/etc/hosts</code>

<code> </code> 

<code>salt </code><code>'*'</code> <code>cp</code><code>.get_dir salt:</code><code>//path/to/dir/</code> <code>/minion/dest</code>    <code>#将主服务器file_roots指定位置下的目录复制到被控主机,salt:// 第一个‘/’为 配置文件base指定的根,第二个为路径分割符</code>

<code>salt </code><code>'*'</code> <code>cp</code><code>.get_file salt:</code><code>//path/to/file</code> <code>/minion/dest</code>   <code>#将主服务器file_roots指定位置下的文件复制到被控主机</code>

<code>salt </code><code>'*'</code> <code>cp</code><code>.get_url http:</code><code>//www</code><code>.baidu.com </code><code>/tmp/index</code><code>.html     </code><code>#下载URL内容到被控主机指定位置</code>

<code>    </code><code>/tmp/index</code><code>.html</code>

<code>client.cmd(</code><code>'*'</code><code>,</code><code>'cp.get_file'</code><code>,[</code><code>'salt://path/to/file '</code><code>,</code><code>' /minion/dest'</code><code>])</code>

(4)cron模块

功能:实现被控主机的crontab操作

<code>salt </code><code>'*'</code> <code>cron.raw_cron root     </code><code>#查看指定被控主机、root用户的crontab清单</code>

<code>    </code><code>#secu-tcs-agent monitor, install at Sat Mar 18 15:55:40 CST 2017</code>

<code>    </code><code>* * * * * /usr/local/sa/agent/secu-tcs-agent-mon-safe.sh /usr/local/sa/agent &gt; /dev/null 2&gt;&amp;1</code>

<code>    </code><code>*/1 * * * * /usr/local/qcloud/stargate/admin/start.sh &gt; /dev/null 2&gt;&amp;1 &amp;</code>

<code>    </code><code>*/20 * * * * /usr/sbin/ntpdate ntpupdate.tencentyun.com &gt;/dev/null &amp;</code>

<code>    </code><code>30 2 * * * /www/server/panel/certbot-auto renew &gt;&gt; /www/server/panel/logs/certbot.log</code>

<code>salt </code><code>'*'</code> <code>cron.set_job root </code><code>'*'</code> <code>'*'</code> <code>'*'</code> <code>'*'</code> <code>1 /usr/local/weekly  </code><code>#为指定的被控主机、root用户添加/usr/local/weekly任务作业</code>

<code>    </code><code>new</code>

<code>salt </code><code>'789880e2'</code> <code>cron.rm_job root /usr/local/weekly     </code><code>#删除指定的被控主机、root用户crontab的/usr/local/weekly任务作业</code>

<code>    </code><code>removed</code>

<code>client.cmd(</code><code>'*'</code><code>,</code><code>'cron.set_job,['</code><code>root</code><code>','</code><code>*</code><code>','</code><code>*</code><code>','</code><code>*</code><code>','</code><code>*</code><code>','</code><code>*</code><code>','</code><code>/</code><code>usr</code><code>/</code><code>echo'])</code>

       本文转自谢育政 51CTO博客,原文链接:http://blog.51cto.com/kurolz/1934033,如需转载请自行联系原作者

继续阅读