内容简介:前面的几节我们已经完成了执行字典生成器和执行字典执行器,现在我们只需要编写一个入口程序来接收外界输入然后自动生成执行字典列表,然后再通过task执行器来依次执行任务,就可以完全整个程序的编写。这里我们使用getopt库,这个库可以简洁的接收传入参数,并且支持长参数和短参数两种形式。程序至此就已经算是写好了,虽然还很不完善,但已经实现了基本的功能。我们编写一个简单的playbook来测试一下最终的程序。
前面的几节我们已经完成了执行字典生成器和执行字典执行器,现在我们只需要编写一个入口程序来接收外界输入然后自动生成执行字典列表,然后再通过task执行器来依次执行任务,就可以完全整个程序的编写。
import sys import getopt from task_executor import TaskExecutor from get_tasklist import getTaskList #getopt是一个非常好用的 python 库,设定的参数后加":"意味这个参数需要输入 opts,args = getopt.getopt(sys.argv[1:],'-u:-p:-y:-h-v',['user=','password=','yamlfile=','help','version']) for opt_name,opt_value in opts: if opt_name in ('-u','--user'): ssh_user = opt_value if opt_name in ('-p','--password'): ssh_pwd = opt_value if opt_name in ('-y','--yamlfile'): yaml_file = opt_value if opt_name in ('-h','--help'): print "help you" sys.exit() if opt_name in ('-v','--version'): print "version 1.0" sys.exit() task_list = getTaskList.get_final_task_list(ssh_user,ssh_pwd,yaml_file) for task in task_list: tmp=TaskExecutor.run_task(task) print tmp 复制代码
这里我们使用getopt库,这个库可以简洁的接收传入参数,并且支持长参数和短参数两种形式。
测试最终程序
程序至此就已经算是写好了,虽然还很不完善,但已经实现了基本的功能。我们编写一个简单的playbook来测试一下最终的程序。
---
- name: test program on remote machine
host: 192.168.1.34
tasks:
- task_name: create test folder on remote machine
become: yes
become_user: root
action_type: shell
action: mkdir /opt/mstr/test
- task_name: create test folder on localhost
action_type: shell
action: mkdir /opt/mstr/test
delegate_to: localhost
复制代码
这个playbook非常简单,执行后会在本机和远程机器上生成一个文件夹。
现在我们来执行这个playbook:
python main.py -u test_user -p test_pwd -y /opt/mstr/test.yaml 复制代码
运行结束后可以看到,本机和远程机器上成功生成了相应的文件夹。
playbook的格式
我们的playbook的格式基本与ansible的一致,但也有一些不同点需要注意:
- 新增action_type和action关键字,ansible的action是类似 shell :mkdir test 这样的格式,module在前,具体的操作在后。但这种格式在解析yaml文件的时候不够简单快捷,于是我将它拆成action_type和action两个关键字
- 暂时不支持register关键字。register可以在playbook中设定变量,这个功能我会在以后有空时添加进来
- 暂时不支持playbook模板。这个功能以后也会添加进来
- become_method暂时只有sudo 方式,su方式还没有空写
- playbook的一些高级功能还没有实现
如果你需要为这个程序编写playbook,请注意以上几点。另外,完整的程序我已经开源到github,欢迎试用和帮忙找bug。 github地址: github.com/CTC-maxiao/…
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网
猜你喜欢:本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
如何构建敏捷项目管理团队
丽萨·阿金斯 / 徐蓓蓓、白云峰、刘江华 / 电子工业出版社 / 2012-6 / 49.00元
《敏捷项目管理系列丛书•PMI-ACPSM考试指定教材•如何构建敏捷项目管理团队:ScrumMaster、敏捷教练与项目经理的实用指南》结合作者的亲身经历告诉读者如何建立一个高性能的敏捷项目管理团队,以及最终成为一名优秀的敏捷教练。作者将敏捷教练定义为导师、协助者、老师、问题解决者、冲突领航员、协作指挥者,正是这种不同角色之间的细微区别才使敏捷教练的工作富有深度。《敏捷项目管理系列丛书•PMI-A......一起来看看 《如何构建敏捷项目管理团队》 这本书的介绍吧!