ansible在playbook中变量传入到执行脚本的方法

简介

这个方式用于ansible调用playbook方法实现远程服务器执行某个脚本,脚本中的某些参数需要由管理服务器传入的情况。

下面的例子是ansible实际调用script模块实现远程服务器执行一个shell脚本

脚本内容

ansible 执行脚本

#!/usr/bin/env python
# -*- coding:utf-8 -*-
# edit: mesopodamia@gmail.com

import ansible
from ansible.playbook import PlayBook
from ansible.inventory import Inventory
from ansible import callbacks
from ansible import utils
import sys

reload(sys)
sys.setdefaultencoding('utf-8')

vars = "hello world"
ansible_command = "/usr/local/bin/ansible-playbook"
playbook = "/home/eric/playbook/deploy.yml"
hosts = ['192.168.0.99']

# Boilerplace callbacks for stdout/stderr and log output
utils.VERBOSITY = 0
playbook_cb = callbacks.PlaybookCallbacks(verbose=utils.VERBOSITY)
stats = callbacks.AggregateStats()
runner_cb = callbacks.PlaybookRunnerCallbacks(stats, verbose=utils.VERBOSITY)

# pro输入数据是列表
def ansible_playbook(playbook,pro,vars):
  pb = PlayBook(
    playbook=playbook, 
    inventory = Inventory(pro), 
    callbacks = playbook_cb,
    runner_callbacks = runner_cb,
    stats = stats,
    extra_vars = {'var':vars}
  )
  return pb.run()

if __name__ == "__main__": 
  ansible_playbook(playbook,hosts,vars)

远程调用脚本(eric.sh)

#!/usr/bin/env bash
echo `date` > /tmp/date.txt
echo $1 > /tmp/date.txt

ansible中playbook的设置

playbook的定义(deploy.yml)

- hosts: all
  roles:
    - role: init

具体的角色init中task的main.yml定义

- script: ~/bin/eric.sh "{{ var }}"

转载于:https://my.oschina.net/mesopotamia/blog/519991

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值