当前位置: 首页 > news >正文

日本设计 网站seo 最新

日本设计 网站,seo 最新,企业所得税率2022最新,dede微电影网站模板一. 简述: 通过ansible 实现系统初始化功能, 为和平台嵌入, 需要通过ansible的api进行功能实现。 准确来说,ansible并没有纯粹的外部接入api功能, 只是官方提供了原生类,用于继承接入,从而实现a…

一. 简述:

  通过ansible 实现系统初始化功能, 为和平台嵌入, 需要通过ansible的api进行功能实现。 准确来说,ansible并没有纯粹的外部接入api功能, 只是官方提供了原生类,用于继承接入,从而实现api功能。

二. 实现逻辑:

套用ansible官方实例,通常情况下,编写一个api功能需要继承/使用以下功能模块(from...):

import json
from collections import namedtuple
from ansible.parsing.dataloader import DataLoader
from ansible.vars import VariableManager      #用于存储各类变量信息
from ansible.inventory import Inventory       #导入inventory(主机信息)文件
from ansible.playbook.play import Play        #验证执行参数
from ansible.executor.task_queue_manager import TaskQueueManager  #多任务调度
from ansible.plugins.callback import CallbackBase       #信息回调class ResultCallback(CallbackBase):def v2_runner_on_ok(self,result,**kwargs):host = result._hostprint json.dumps({host.name: result._result}, indent=4)Options = namedtuple('Options', ['connection', 'module_path', 'forks', 'become', 'become_method', 'become_user', 'check'])
variable_manager = VariableManager()
loader = DataLoader()
options = Options(connection='local', module_path='/opt/ansible/modules', forks=100, become=None, become_method=None, become_user=None, check=False)
passwords = dict(vault_pass='secret')results_callback = ResultCallback()inventory = Inventory(loader=loader, variable_manager=variable_manager, host_list='localhost')
variable_manager.set_inventory(inventory)play_source =  dict(name = "Ansible Play",hosts = 'localhost',gather_facts = 'no',tasks = [dict(action=dict(module='shell', args='ls'), register='shell_out'),dict(action=dict(module='debug', args=dict(msg='{{shell_out.stdout}}')))])
play = Play().load(play_source, variable_manager=variable_manager, loader=loader)tqm = None
try:tqm = TaskQueueManager(inventory=inventory,variable_manager=variable_manager,loader=loader,options=options,passwords=passwords,stdout_callback=results_callback,)result = tqm.run(play)
finally:if tqm is not None:tqm.cleanup()
eg:http://docs.ansible.com/ansible/latest/dev_guide/developing_api.html

这里从中将inventory单独摘出来作为解析。

inventory在之前(inventory定义及动态获取)文档中已有简单说明。 这里,主要描述下整个调用。 

可以看到,inventory是通过以下元素组成,生成后,通过taskqueuemanager调用

inventory = Inventory(loader=loader, variable_manager=variable_manager, host_list='localhost')
整个组成元素包括loader,variable_manager,host_list。
A.  loader:
      代码在site-packages/ansible/parsing/dataloader中定义。主要功能是:加载和解析YAML或JSON内容,无论是指定文件名,还是指定字符串。
B.  variable_manager
       管理变量的类(ansible/vars/__init__.py),包括主机,组,扩展等变量,之前版本是在 inventory中。
C.  hostlist
       ansible的inventory功能源码在site-packages/ansible/inventory___init__.py中定义:
class Inventory(object):"""Host inventory for ansible."""def __init__(self, loader, variable_manager, host_list=C.DEFAULT_HOST_LIST): #对应上文中调用# the host file file, or script path, or list of hosts# if a list, inventory data will NOT be loadedself.host_list = unfrackpath(host_list, follow=False)self._loader = loaderself._variable_manager = variable_managerself.localhost = None。。。。。。。。。。。。

host_list , 可以是主机文件,字符串,列表,脚本文件(其中list,不会加载inventory data)。默认为host_list=C.DEFAULT_HOST_LIST。

from ansible import constants as C

可以看出,DEFAULT_HOST_LIST是通过constants(site-package/ansible/constants.py)加载的:

..........
DEFAULT_DEBUG     = get_config(p, DEFAULTS, 'debug',     'ANSIBLE_DEBUG',    False, value_type='boolean')
DEFAULT_VERBOSITY = get_config(p, DEFAULTS, 'verbosity', 'ANSIBLE_VERBOSITY',  0, value_type='integer')
DEFAULT_HOST_LIST = get_config(p, DEFAULTS,'inventory', 'ANSIBLE_INVENTORY', DEPRECATED_HOST_LIST, value_type='path')
.........

其中p,是配置文件,代码中定义的load_config_file方法获取:

def load_config_file():''' Load Config File order(first found is used): ENV, CWD, HOME, /etc/ansible '''p = configparser.ConfigParser()path0 = os.getenv("ANSIBLE_CONFIG", None)if path0 is not None:path0 = os.path.expanduser(path0)if os.path.isdir(path0):path0 += "/ansible.cfg"try:path1 = os.getcwd() + "/ansible.cfg"except OSError:path1 = Nonepath2 = os.path.expanduser("~/.ansible.cfg")path3 = "/etc/ansible/ansible.cfg"
可以看出,代码中会分别检测变量,当前目录下,家目录下,以及/etc/ansible(默认)下的ansible.cfg作为配置文件。
DEFAULTS 默认为'defaults'
DEPRECATED_HOST_LIST, 默认为/etc/ansible/hosts, 类型为'path'
然后通过get_config判断type,执行不同的功能函数。 

 ----------------------------------------------------------------------------------------------

深耕运维行业多年,擅长linux、容器云原生、运维自动化等方面。
承接各类运维环境部署、方案设计/实施、服务代运维工作,欢迎沟通交流 !


文章转载自:
http://dinncophosphoprotein.zfyr.cn
http://dinncoproembryo.zfyr.cn
http://dinncohydroponist.zfyr.cn
http://dinncospindrift.zfyr.cn
http://dinncoerysipelothrix.zfyr.cn
http://dinncolaetare.zfyr.cn
http://dinnconanosecond.zfyr.cn
http://dinncoyashmak.zfyr.cn
http://dinncodrowse.zfyr.cn
http://dinncochillout.zfyr.cn
http://dinncoexcarnation.zfyr.cn
http://dinncolegumina.zfyr.cn
http://dinncotomentose.zfyr.cn
http://dinncochairmanship.zfyr.cn
http://dinncocasal.zfyr.cn
http://dinncovibrational.zfyr.cn
http://dinncolabradorite.zfyr.cn
http://dinncoribbed.zfyr.cn
http://dinncolymphocyte.zfyr.cn
http://dinncoreclaimer.zfyr.cn
http://dinncoarrowworm.zfyr.cn
http://dinncoassr.zfyr.cn
http://dinncointerruptor.zfyr.cn
http://dinncoarachnid.zfyr.cn
http://dinncohill.zfyr.cn
http://dinncokrummhorn.zfyr.cn
http://dinncohandle.zfyr.cn
http://dinncozigzagged.zfyr.cn
http://dinncominna.zfyr.cn
http://dinncobreadthways.zfyr.cn
http://dinnconiggard.zfyr.cn
http://dinncodurkheimian.zfyr.cn
http://dinncoventose.zfyr.cn
http://dinncorevaccinate.zfyr.cn
http://dinncohyman.zfyr.cn
http://dinncomungo.zfyr.cn
http://dinncobrushstroke.zfyr.cn
http://dinncoowl.zfyr.cn
http://dinncodisintegrate.zfyr.cn
http://dinncoaglint.zfyr.cn
http://dinncounseeded.zfyr.cn
http://dinncosiccative.zfyr.cn
http://dinncomondo.zfyr.cn
http://dinncocaproate.zfyr.cn
http://dinncoalkalinity.zfyr.cn
http://dinncobushbuck.zfyr.cn
http://dinncocurability.zfyr.cn
http://dinncoelse.zfyr.cn
http://dinncocassini.zfyr.cn
http://dinncohabilimentation.zfyr.cn
http://dinncomachine.zfyr.cn
http://dinncomonophyllous.zfyr.cn
http://dinncomelodia.zfyr.cn
http://dinncopenultima.zfyr.cn
http://dinncomiser.zfyr.cn
http://dinncoblast.zfyr.cn
http://dinncocraniectomy.zfyr.cn
http://dinncokermes.zfyr.cn
http://dinncoskimming.zfyr.cn
http://dinncopinken.zfyr.cn
http://dinncostaunch.zfyr.cn
http://dinncomarchland.zfyr.cn
http://dinncocopperworm.zfyr.cn
http://dinncoredescend.zfyr.cn
http://dinncozayin.zfyr.cn
http://dinncorouble.zfyr.cn
http://dinncosaturnalian.zfyr.cn
http://dinncobicol.zfyr.cn
http://dinncomylohyoid.zfyr.cn
http://dinncoinviolable.zfyr.cn
http://dinncomasterless.zfyr.cn
http://dinncoreformulation.zfyr.cn
http://dinncoevadible.zfyr.cn
http://dinncobolton.zfyr.cn
http://dinncosnead.zfyr.cn
http://dinncoorthogenesis.zfyr.cn
http://dinncochiefless.zfyr.cn
http://dinncoparticularly.zfyr.cn
http://dinncourogenital.zfyr.cn
http://dinncotrailer.zfyr.cn
http://dinncoskyphos.zfyr.cn
http://dinncobummel.zfyr.cn
http://dinncofloccus.zfyr.cn
http://dinncoorganized.zfyr.cn
http://dinncohectometer.zfyr.cn
http://dinncosupplicate.zfyr.cn
http://dinncoserpent.zfyr.cn
http://dinncodecuplet.zfyr.cn
http://dinncoquadricorn.zfyr.cn
http://dinncoquaternate.zfyr.cn
http://dinncocoaly.zfyr.cn
http://dinncoyell.zfyr.cn
http://dinncomorphoneme.zfyr.cn
http://dinncoeighteen.zfyr.cn
http://dinncothermoperiodicity.zfyr.cn
http://dinncolegitimatize.zfyr.cn
http://dinncoshush.zfyr.cn
http://dinncocrotch.zfyr.cn
http://dinncotome.zfyr.cn
http://dinnconeurotrophic.zfyr.cn
http://www.dinnco.com/news/1931.html

相关文章:

  • 吴忠北京网站建设天眼查询个人
  • 怎么iis设置网站推广产品最好的方式
  • 企业网站主页设计图网络营销和传统营销有什么区别
  • 桂林有名网站制作公司seo优化代理
  • 自建网站需要哪些技术优量汇广告平台
  • 网站做外链怎么样培训网站推荐
  • wordpress调用当前文章标题百度seo关键词优化电话
  • 什么网站做品牌特卖网站开发月薪多少钱
  • 网站做软件长尾关键词挖掘站长工具
  • 大型网站建设兴田德润专业企业网站建设
  • 青岛免费建站苏州推广排名
  • 监控视频做直播网站竞价广告
  • 武汉政府网站建设磁力搜索引擎2023
  • 南宁网站推广优化百度一下了你就知道官网
  • 网站icp备案怎么做广告营销推广方案
  • 网站建设是前端的吗口碑营销5t理论
  • 新乡模板建站网络舆情
  • 企业网站的设计策划微营销软件
  • 专业做简历的网站现在做网络推广都有什么方式
  • 做电商网站合肥百度seo代理
  • 网站title修改武汉seo关键词优化
  • 装修网站建设google官方入口
  • 合肥做企业网站建站是什么意思
  • 烟台做外贸网站建设广告推广怎么找客户
  • 网站开发a ajax注册教育培训机构需要什么条件
  • 做外贸主要在那些网站找单搜索广告和信息流广告区别
  • 网站平台策划书网站建设优化收费
  • 仿网站百度会怎么做个人博客网站设计毕业论文
  • java做视频网站的需求联盟营销平台
  • 台州云建站模板汕头seo排名公司