文档章节

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

HelloEric
 HelloEric
发布于 2015/10/21 17:56
字数 261
阅读 3684
收藏 3

简介

这个方式用于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 }}"

© 著作权归作者所有

共有 人打赏支持
HelloEric

HelloEric

粉丝 8
博文 81
码字总数 76741
作品 0
成都
私信 提问
ansible--变量

ansible中的变量主要来源于以下几种场景: Inventory(host vars,group vars) playbook里面 命令行 playbook执行task过程中产生结果,可以register起来,作为变量给下面的task使用 roles里面 ...

Gavin7216
2017/07/10
0
0
Ansible 之 playbook使用

1 概述 Playbook组织格式是YAML格式,编排的是任务(task),用来记录重复执行的命令 YAML:YAML(/ˈjæməl/,尾音类似camel骆驼)是一个可读性高,用来表达数据序列的格式。YAML参考了其他...

ghbSunny
2017/12/04
0
0
Ansible_变量定义与引用

Ansible_变量定义与引用 Ansible变量定义与引用 inventory定义主机及主机组(自定义变量) $ cat hostslocalhost ansiblesshhost=192.168.38.104 key=104client105 ansiblesshhost=192.168.38......

乱世浮尘
2017/12/11
0
0
102:ansible之playbook

1、playbook 就是把所有的配置写到一个配置文件里,直接执行这个配置文件就可以了; 首先定义个一个配置文件 /etc/ansible/test.yml 2:执行: ansible-playbook test.yml (ansible-playbook后...

芬野de博客
2018/11/23
0
0
ansible学习总结

1 前言 Ansible是新出现的运维工具是基于Python研发的糅合了众多老牌运维工具的优点实现了批量操作系统配置、批量程序的部署、批量运行命令等功能。 ansible是基于模块工作的ansible本身没有...

双月通天
2016/04/01
286
0

没有更多内容

加载失败,请刷新页面

加载更多

弹窗时候禁止页面滚动

1、依靠css 将页面 document.documentElement.style.overflow='hidden'; document.body.style.overflow='hidden';//手机版设置这个。 如果设置了如上,页面的滚动条将会消失,此时鼠标滚轮失......

Jack088
26分钟前
7
0
.NET的数学库NMath实用教程——创建最小二乘法

NMath是一个适用于所有.NET语言,如C#、Visual Basic、F#和.NET的数学库,它包含了.NET平台上的面向对象数字计算的基础类。我们将以连载的形式向大家介绍NMath的实用教程,有任何建议或提示...

ymy_666666
26分钟前
2
0
索尼为收购工作室准备,对抗微软?

对比来说,索尼方面不但没有增加新的工作室,反而在过去两年内关闭了一些工作室。面对微软的步步紧逼,索尼最新的招聘广告暗示将来有可能会收购一些工作室。 在领英上,索尼互动娱乐发布了两...

linuxCool
26分钟前
2
0
公司网站有漏洞被入侵该怎么解决

2019年1月14日消息,thinkphp又被爆出致命漏洞,可以直接远程代码执行,getshell提权写入网站木马到网站根目录,甚至直接提权到服务器,该漏洞影响版本ThinkPHP 5.0、ThinkPHP 5.0.10、Think...

网站安全
38分钟前
4
0
centos7 Nginx+rtmp 搭建流媒体服务器

一. gcc 安装 安装 nginx 需要先将官网下载的源码进行编译,编译依赖 gcc 环境,如果没有 gcc 环境,则需要安装: yum -y install gcc gcc-c++ 二. PCRE pcre-devel 安装 PCRE(Perl Compatib...

legend3
56分钟前
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部