ansible

Write Ansible playbooks using Python dictionary

蓝咒 提交于 2020-03-03 08:11:10
问题 I am trying execute the following playbook using python script. playbook = dict( name = "Enable Site", hosts = [host], gather_facts = 'no', tasks = [ dict(action=dict( module='find', args=dict(paths="/etc/apache2/sites-enabled")), register='files_found'), dict(action=dict( module='shell', args="cd /etc/apache2/sites-enabled && a2dissite *"), register='shell_out', when='files_found.matched > 0'), dict(action=dict(module='shell', args="a2ensite " + site_name), register='shell_out'), dict(action

16、编译安装ansible

℡╲_俬逩灬. 提交于 2020-03-02 18:54:46
16.1、python版本说明: Ansible是一种批量部署工具,现在运维人员用的最多的三种开源集中化管理工具有:puppet,saltstack,ansible,各有各的优缺点, 其中saltstack和ansible都是用python开发的。ansible其实准确的说只提供了一个框架,它要基于很多其他的python模块才能工 作的,所以在安装ansible的时候你要再装很多其他的依赖包的。ansible的好处之一是使用者可以开发自己的模块,放在里面使用; 第二个好处是无需在客户端安装agent,更新时,只需在操作机上进行一次更新即可;第三个好处是批量任务执行可以写成脚本, 而且不用分发到远程就可以执行。强烈建议升级python版本到2.6以上,不然运行会出错或者有些功能会没有,在编译安装其他包的 时候也会因为兼容问题报错。 16.2、centos7下python版本是2.7.5,符合ansible的安装需求,直接进行编译安装即可。centos6下的python版本为Python 2.6.6, 需要升级python版本到2.7,升级步骤如下: 1、提前安装依赖包: yum install zlib zlib-devel openssl openssl-devel gcc -y 2、编译安装: wget https://www.python.org/ftp/python/2.7

Ansible报错 "msg": "Failed to connect to the host

与世无争的帅哥 提交于 2020-03-02 10:00:27
nginx-2 | UNREACHABLE! => { "changed": false, "msg": "Failed to connect to the host via ssh: @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@\r\n@ \nIT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY!\r\nSomeone could be eavesdropping on you right now (man-in-th by the remote host is\nSHA256:mLGTRAdsoC/plMuoawCaV6gCJipekSikSi6mB5j85ME.\r\nPlease contact your system administratown_hosts:12\r\nECDSA host key for nginx-2 has changed and you have requested strict checking.\r\nHost key verif "unreachable": true } vim ~/.ssh/known_hosts 删除nginx-2的相关rsa的信息即可. 来源: 51CTO 作者: 李佳良 链接: https:

Ansible dictionary key as variable

两盒软妹~` 提交于 2020-03-01 07:19:57
问题 Let's have something like this in role defaults/main.yml: num: 0 config: 0: a: true b: 'x' 1: a: false b: 'y' 2: a: false b: 'z' Now I send -e num=1 in playbook call, and I want to use values a and b based on this value somewhere else in the role, something like: aValue: '{{config[num].a}}' bValue: '{{config[num].b}}' How do I do that? I tried aValue: '{{config[num].a}}' but got an error: 'dict object' has no attribute u'1' aValue: '{{config["num"].a}}' but got an error: 'dict object' has no

使用ansible批量修改主机名后/etc/hosts文件不能被正确修改的修复方法

旧时模样 提交于 2020-02-29 19:45:51
我前面一篇文章讲述了如何这ansible中批量修改主机名,但是上面没有经过严格的测试。 使用hostname模块修改主机名之后,/etc/hosts里的内容是并没有修改的 这里会造成一个问题,如果hosts里的的主机名没有被绑定,那么我们SSH的时候会造成问题,出现主机名无法解析的现象 解决办法。我这里是ubuntu的机器 centos的还没测试过 jastme@jastme2:~$ more /etc/nsswitch.conf # /etc/nsswitch.conf # # Example configuration of GNU Name Service Switch functionality. # If you have the `glibc-doc-reference' and `info' packages installed, try: # `info libc "Name Service Switch"' for information about this file. passwd: compat group: compat shadow: compat #hosts: files dns 换成下面的,取消DNS的解析 hosts: files networks: files protocols: db files services: db files

自动化运维工具Ansible

放肆的年华 提交于 2020-02-29 13:42:36
Ansible作用及特点? 协调应用程序生命周期 应用部署 配置管理 工作流程编排 无代理-可预测,可靠,安全 无代理架构 使用OpenSSH通信 无代理维护成本 Ansible架构 USERS:管理员,有两种执行方式,可以通过Ansible执行管理命令批量操作远程主机,也可以通过playbook管理复杂的任务 INVENTORY:保存需要管理主机清单。包括:IP SSH端口 账号密码 API:提供调用接口 MODULES:功能模块,Ansible所有功能都是由模块提供 PLUGINS:插件,Ansible内部核心功能提供 Ansible使用要求 服务端使用要求: Python 2.6/2.7/3.X RedHat,Debian,CentOS等,不支持Windows 被管理端要求: OpenSSH Python 2.6/2.7/3.X Ansible配置文件 : vi /etc/ansible/ansible.cfg [defaults] # some basic default values... #主机清单配置文件 inventory = /etc/ansible/hosts #library = /usr/share/my_modules/ #module_utils = /usr/share/my_module_utils/ #remote_tmp = ~/.ansible

云服务OpenAPI的7大挑战,架构师如何应对?

痞子三分冷 提交于 2020-02-29 07:25:16
阿里妹导读:API 是模块或者子系统之间交互的接口定义。好的系统架构离不开好的 API 设计,而一个设计不够完善的 API 则注定会导致系统的后续发展和维护非常困难。比较好的API设计样板可以参考 github 和 k8s ,它们都是典型的RESTful接口。云服务对外开放的窗口就是OpenAPI,今天要讨论的话题是“云服务场景下OpenAPI设计的挑战”。 为什么要有API规范 之所以强调“云服务”的原因在于,小规模独立API的设计与大规模批量生产API面临的问题是不一样的。同样,只专注于自身产品API的可用性与从更高的层次去看云服务整体API体系的健壮性,要建设的体系也是不一样的。 例如,做一个WEB页面使用的API,只需要考虑性能、稳定性、鉴权就好,因为页面与API是一体的,可以一起发布和回滚,只要功能正常,即便API设计有缺陷,用户也可以接受。而云服务要开放API考虑问题就多了: 首先,云服务开放的是基础设施和服务接口,一般是系统级的对接,API一旦开放想要变更就非常困难; 其次,云服务并非单独运行,不同的产品实际场景中是互相组合的,需考虑产品间的一致性和互通便利性; 云服务API数量庞大,为了更方便使用,配套的API查找、编排、自动化生成SDK等需求也比普通服务强烈; 云服务的稳定性非常重要,核心产品的稳定性就是客户的生命线,要求非常高。 所以云服务由于产品线众多

运维技术干货 — 不仅是 Linux 运维最佳实践

本小妞迷上赌 提交于 2020-02-29 01:59:47
我们面对的是一个不断变化的世界,业务需求在变,技术架构在变,开源工具与商业系统异构部署,新工具和技术概念层出不穷,唯有一套科学的技术方法论才能应对这些变化。很多时候,我们在面对新的问题时,会束手无措。因此,在 OSC 第 132 期高手问答 中,我们策划了“ Linux 运维最佳实践” 的主题,并邀请了 @ xufengnju (胥峰) 作为高手嘉宾。 @ xufengnju (胥峰) ,资深运维专家,有 10 年运维经验,在业界颇具威望和影响力。也是盛大游戏高级研究员,2006 年毕业于南京大学,2011 年加入盛大游戏,工作至今,曾参与盛大游戏多款大型端游和手游的上线运维,主导运维自动化平台的功能设计和实施。拥有工信部认证高级信息系统项目管理师资格。 自动化运维在近几年一直都是很火热的话题,技术也一直在进步,因此对于技术人员来说,最重要的思维上、思想上的适应与转变。毕竟技术不是运维的终极追求,思想才是运维人员应该毕生修炼的目标!本次高手问答的高手嘉宾对运维服务体系有着深度的思考,因此问答中产生的内容也是十分有质量。 本文从多个角度整理了与运维相关的内容,包括工具的选择、运维中遇到的问题、自动化运维相关等等。 一、工欲善其事必先利其器,如何选择工具? 1. 对服务器安全和监控,可以推荐一些开源工具吗?监控好像也就 nagios, cacti, zabbix,还有其他可以推荐的吗

Ansible个人学习roles使用实践(mariadb安装)

坚强是说给别人听的谎言 提交于 2020-02-28 03:45:18
role用法 角色(roles)是用于层次性,结构化地组织playbook,roles就是通过分别将变量、文件、任务、模块及处理器放置于单独的目录中、并可以便捷地include他们的一种机制。 一、role的层级目录结构 role是以特定的层级目录结构进行组织的tasks、variables、handlers、templates、files等; roles/ role_name/:定义的role的名字 file/: 用于存放copy或script等模块调用的函数 tasks/: 用于定义各种task,此目录一定要有main.yml;其他文件需要main.yml包含调用 handlers/: 用于定义各种handlers,此目录一定要有main.yml;其他文件需要main.yml包含调用 vars/: 用于定义variables,此目录一定要有main.yml;其他文件需要main.yml包含调用 templates/:存储由template模块调用的模板文本; meta/: 定义当前角色的特殊设定及其依赖关系,此目录中至少应该有一个名为main.yml的文件;其它的文件需要由main.yml进行"包含"调用; default/: 此目录中至少应该有一个名为main.yml的文件,用于设定默认变量; 目录解释: group_vars:全局变量 yml文件

如何在 CentOS 8 和 RHEL 8 系统上安装和使用 Ansible

我的未来我决定 提交于 2020-02-28 00:00:36
Ansible 是给 Linux 系统管理员使用的出色自动化工具。它是一种开源配置工具,能让系统管理员可以从一个中心节点(即 Ansible 服务器)管理数百台服务器。将 Ansible 与 Puppet、Chef 和 Salt 等类似工具进行比较时,它是首选的配置工具,因为它不需要任何代理,并且可以工作在 SSH 和 python 上。 在本教程中,我们将学习如何在 CentOS 8 和 RHEL 8 系统上安装和使用 Ansble。 Ansible 实验环境信息: 最小化安装的 CentOS 8 / RHEL 8 服务器(192.168.1.10),且有互联网连接 两个 Ansible 节点 - Ubuntu 18.04 LTS (192.168.1.20) 和 CentOS 7 (192.168.1.30) CentOS 8 上的 Ansible 安装步骤 Ansible 包不在 CentOS 8 默认的软件包仓库中。因此,我们需要执行以下 命令 启用 EPEL 仓库: [root@linuxtechi ~]$ sudo dnf install https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm -y 启用 epel 仓库后,执行以下 dnf 命令 安装 Ansible: [root