首页 > 其他分享 >ansibleplaybook api

ansibleplaybook api

时间:2023-11-07 09:45:38浏览次数:31  
标签:None ansibleplaybook hostsFile self ansible loader api import

#!/usr/bin/env python
# coding=utf-8
import os
import time

from ansible import context
from ansible.cli import CLI
from ansible.module_utils.common.collections import ImmutableDict
from ansible.executor.playbook_executor import PlaybookExecutor
from ansible.parsing.dataloader import DataLoader
from ansible.inventory.manager import InventoryManager
from ansible.vars.manager import VariableManager


class AnsibleDh(object):
    def __init__(self, hostsFile="ansible-hosts"):
        self.hostsFile = hostsFile
        self.empty_file()

    def empty_file(self):
        """
        清空ansible hosts文件
        :return: None
        """
        if os.path.exists(self.hostsFile):
            os.remove(self.hostsFile)

    def add_host(self, lineContenet):
        """
        把配置内容(一台主机信息)追加写入ansible hosts文件中
        :param lineContenet: ansible hosts的一行内容
        :return: None
        """
        with open(self.hostsFile, encoding="utf-8", mode="a") as f:
            f.write(lineContenet)

    def cmd_palybook(self, playbook):
        """
        执行剧本
        :param playbook: playbook绝对路径
        :return:
        """
        loader = DataLoader()
        context.CLIARGS = ImmutableDict(tags={}, listtags=False, listtasks=False, listhosts=False, syntax=False,
                                        connection='ssh', module_path=None, forks=100, remote_user='root',
                                        private_key_file=None, ssh_common_args='-o StrictHostKeyChecking=no',
                                        ssh_extra_args='-o StrictHostKeyChecking=no', sftp_extra_args=None,
                                        scp_extra_args=None, become=True, become_method='sudo', become_user='root',
                                        verbosity=True, check=False, start_at_task=None)
        inventory = InventoryManager(loader=loader, sources=(self.hostsFile,))
        variableManager = VariableManager(loader=loader, inventory=inventory,
                                           version_info=CLI.version_info(gitinfo=False))

        try:
            pbExec = PlaybookExecutor(playbooks=[playbook], inventory=inventory,
                                    variable_manager=variableManager, loader=loader, passwords={})
            res = pbExec.run()
        except Exception as error:
            print("[错误] Playbook执行异常")
            print(error)
        else:
            # 备份ansible hosts文件
            now = time.strftime("%Y%m%d-%H:%M:%S", time.localtime())
            os.rename(self.hostsFile, self.hostsFile + '-' + now)


if __name__ == '__main__':
    print('ok')

 

标签:None,ansibleplaybook,hostsFile,self,ansible,loader,api,import
From: https://www.cnblogs.com/wsongl/p/15211781.html

相关文章

  • FastAPI搭建Web服务器
    FastAPI搭建Web服务器1、基于FastAPI之web站点开发#第一步:导入模块fromfastapiimportFastAPI#导入响应报文Response模块fromfastapiimportResponse#导入服务器uvicorn模块importuvicorn#第二步:创建FastAPI对象app=FastAPI()#第三步:通过@app路由装饰器收......
  • 体验Stream API的用法
    Stream是Java8中处理集合的关键抽象概念,它可以指定你希望对集合进行的操作,可以执行非常复杂的查找、过滤和映射数据等操作。使用StreamAPI对集合数据进行操作,就类似于使用SQL执行的数据库查询。也可以使用StreamAPI来并行执行操作。简而言之,StreamAPI提供了一种高......
  • 人脸识别Mediapipe+Dlib实现1 : N式人脸匹配
    一、前言本来是想进行加速运行的。最后只快了两三帧哈哈哈哈。本次采用的方法是用Mediapipe进行人脸识别,配合使用Dlib进行特征提取以及特征向量转化。目前可以实现1:n式人脸匹配,随便改改就行n:m了,就是效率太低了实现原帖【---->点击这里<----】二、难点以及之后可继续学习......
  • JavaScript--Web API
    DOMDOM(DocumentObjectModel——文档对象模型)是用来呈现以及与任意HTML或XML文档交互的API。DOM是浏览器提供的一套专门用于操作网页内容的功能作用:开发网页内容特效和实现用户交互DOM树DOM节点节点是文档树的组成部分,每一个节点都是一个DOM对象,主要分为......
  • uniApp:使用vue3+Vite4+pinia+sass技术栈构建(02)-封装api请求
    前言在纯vue3开发的时候,使用axios进行api请求,但在uniapp中还需要安装axios的适配器uniapp-axios-adapter,否则小程序或者app请求不兼容。文档地址uniapp-axios-adapter-DCloud插件市场但在这里我们不使用axios,而是使用uniapp提供的请求方法uni.request进行封装。uni.request方......
  • Eolink Apikit 版本更新:数据字典功能上线、支持 MongoDB 数据库操作...
    ......
  • Google maps api demo
    demo:<!DOCTYPEhtml><html><head><metaname="viewport"content="initial-scale=1.0,user-scalable=no"><metacharset="utf-8"><title>KMLLayers</title><style>......
  • Google maps api demo 2
     demo/***@fileoverviewSampleshowingcapturingaKMLfileclick*anddisplayingthecontentsinasidepanelinsteadof*anInfoWindow*/varmap;varsrc='https://developers.google.com/maps/tutorials/kml/westcampus.kml';/***......
  • Google maps API
    https://developers.google.com/kml/documentation/kml_tuthttps://developers.google.com/maps/documentation/javascript/examples/layer-kml?hl=zh-cnhttps://developers.google.com/maps/tutorials/kml/https://developers.google.com/maps/support/kmlmapshttps://develo......
  • 配置使用百度地图时出现:APP Referer校验失败。请检查该ak设置的白名单与访问所有的域
    如果是个人内部测试使用,直接将IP白名单设置为*  ......