
面playbook 实现功能新增用户:
name参数该playbook实现功能做概述面执行程打印 name变量值 ;
hosts参数指定哪些主机进行参作;
user参数指定使用用户登录远程主机 *** 作;
gather_facts参数指定任务部执行前否先执行setup模块获取主机相关信息面task使用setup获取信息用;
vars参数指定变量指字user变量其值test 需要注意变量值定要用引号引住;
task指定任务其面name参数同任务描述执行程打印user提定调用user模块nameuser模块参数增加用户名字调用面user变量值
Adhoc
adhoc 其实执行 Ansible 模块, 通 adhoc 我便快捷完些临运维 *** 作
20 前调用
import ansiblerunner
import json
runner = ansiblerunnerRunner(
module_name='ping', # 模块名
module_args='', # 模块参数
pattern='all', # 目标机器pattern
forks=10
)
datastructure = runnerrun()
data = jsondumps(datastructure,indent=4)
加载默认 inventory
想使用 inventory 文件或者想使用态 inventory, 则使用 host_list 参数代替
import ansiblerunner
import json
runner = ansiblerunnerRunner(
host_list=["101001"], # 明确指定主机需要传递列表, 或者指定态inventory脚本
module_name='ping', # 模块名
module_args='', # 模块参数
extra_vars={"ansible_ssh_user":"root","ansible_ssh_pass":"xx"},
forks=10
)
datastructure = runnerrun()
data = jsondumps(datastructure,indent=4)
20 调用
import json
from ansibleparsingdataloader import DataLoader
from ansiblevars import VariableManager
from ansibleinventory import Inventory
from ansibleplaybookplay import Play
from ansibleexecutortask_queue_manager import TaskQueueManager
from ansibleexecutorplaybook_executor import PlaybookExecutor
loader = DataLoader() # 用加载解析yaml文件或JSON内容,并且支持vault解密
variable_manager = VariableManager() # 管理变量类,包括主机,组,扩展等变量,前版本 inventory
inventory = Inventory(loader=loader, variable_manager=variable_manager)
variable_managerset_inventory(inventory) # 根据 inventory 加载应变量
class Options(object):
'''
公共类,ad-hocplaybook都需要options参数
并且所需要拥同属性,部属性都返None或False
用类省初始化堆空值属性
'''
def __init__(self):
selfconnection = "local"
selfforks = 1
selfcheck = False
def __getattr__(self, name):
return None
options = Options()
def run_adhoc():
variable_managerextra_vars={"ansible_ssh_user":"root" , "ansible_ssh_pass":"xxx"} # 增加外部变量
# 构建pb, 意思, 新版本运行ad-hoc或playbook都需要构建pb, 调用play类
# :param name: 任务名,类似playbooktasksname
# :param hosts: playbookhosts
# :param tasks: playbooktasks, 其实playbook语, tasks值列表,写入task
play_source = {"name":"Ansible Ad-Hoc","hosts":"101001","gather_facts":"no","tasks":[{"action":{"module":"shell","args":"w"}}]}
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=None,
stdout_callback='minimal',
run_tree=False,
)
result = tqmrun(play)
print result
finally:
if tqm is not None:
tqmcleanup()
if __name__ == '__main__':
run_adhoc()
Playbook
playbook 则类似于 SaltStack state
20 前调用
from ansible import callbacks
from ansible import utils
from ansibleplaybook import PlayBook
stats = callbacksAggregateStats()
callback = callbacksPlaybookCallbacks()
runner_callbacks = callbacksPlaybookRunnerCallbacks(stats)
pb = ansibleplaybookPlayBook(
playbook="tasksyml",
stats=stats,
callbacks=playbook_cb,
runner_callbacks=runner_cb,
check=True
)
pbrun()
20 调用
import json
from ansibleparsingdataloader import DataLoader
from ansiblevars import VariableManager
from ansibleinventory import Inventory
from ansibleplaybookplay import Play
from ansibleexecutortask_queue_manager import TaskQueueManager
from ansibleexecutorplaybook_executor import PlaybookExecutor
loader = DataLoader() # 用加载解析yaml文件或JSON内容,并且支持vault解密
variable_manager = VariableManager() # 管理变量类,包括主机,组,扩展等变量,前版本 inventory
inventory = Inventory(loader=loader, variable_manager=variable_manager)
variable_managerset_inventory(inventory) # 根据 inventory 加载应变量
class Options(object):
'''
公共类,ad-hocplaybook都需要options参数
并且所需要拥同属性,部属性都返None或False
用类省初始化堆空值属性
'''
def __init__(self):
selfconnection = "local"
selfforks = 1
selfcheck = False
def __getattr__(self, name):
return None
options = Options()
def run_playbook():
playbooks=['taskyaml'] # 列表, 运行playbook
variable_managerextra_vars={"ansible_ssh_user":"root" , "ansible_ssh_pass":"xxx"} # 增加外部变量
pb = PlaybookExecutor(playbooks=playbooks, inventory=inventory, variable_manager=variable_manager, loader=loader, options=options, passwords=None)
result = pbrun()
print result
if __name__ == '__main__':
run_playbook()
以上就是关于ansible playbook在服务器怎么执行全部的内容,包括:ansible playbook在服务器怎么执行、如何利用ansible callback插件对执行结果进行解析、等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)