一、在master 的file_root目录/srv/salt下编辑top.sls:python
base: '*': - pip
二、在/srv/salt目录下建立pip目录,编辑init.sls文件:web
这里是复制get-pip.py文件:函数
pip: file.managed: - source: salt://get-pip.py - name: /home/cheeron/get-pip.py - user: cheeron - group: cheeron - mode: 644
这里的pip定义,使用了file.managed函数,ui
3. 而后就能够经过命令 salt ‘*’ state.highstate 执行文件复制任务spa
执行过程:code
test1: ---------- ID: pip Function: file.managed Name: /home/cheeron/get-pip.py Result: True Comment: File /home/cheeron/get-pip.py is in the correct state Started: 14:44:18.203548 Duration: 36.115 ms Changes: Summary ------------ Succeeded: 1 Failed: 0 ------------ Total states run: 1 test2: ---------- ID: pip Function: file.managed Name: /home/cheeron/get-pip.py Result: True Comment: File /home/cheeron/get-pip.py updated Started: 18:14:04.441644 Duration: 5567.605 ms Changes: ---------- diff: New file group: cheeron mode: 0644 user: cheeron Summary ------------ Succeeded: 1 (changed=1) Failed: 0 ------------ Total states run: 1
若是get-pip.py文件有变化,那么在执行state.highstate命令时对经过diff对比是哪里有改动。server
.sls 这个文件是被放弃的不被容许的 (i.e. webserver.sls 来源于 webserver)blog
每一个子目录描述一个资源ip
pip.dev 用来表示子目录 pip/dev.sls资源
init.sls 在一个子目录里面表示引导文件,也就表示子目录自己, 因此``pip/init.sls`` 就是表示``pip``.
若是同时存在``pip.sls`` 和 pip/init.sls,则 pip/init.sls 被过滤,pip.sls``将被用来表示pip.
复制文件而且执行,经过cmd.run实现:
pip: file.managed: - source: salt://get-pip.py - name: /home/cheeron/get-pip.py - user: cheeron - group: cheeron - mode: 644 cmd.run: - name: python /home/cheeron/get-pip.py - require: - file: /home/cheeron/get-pip.py
这样,在执行了复制命令以后就会执行python /home/cheeron/get-pip.py