ansible

Ansible安装(一)

给你一囗甜甜゛ 提交于 2020-01-26 14:07:54
ansible简介 1.Ansible可以同时管理Redhat系的Linux,Debian系的Linux,以及Windows主机。管理节点只在执行脚本时与远程主机连接,没有特别的同步机制,所以断电等异常一般不会影响ansbile。 2.ansible是新出现的自动化运维工具,基于 Python 开发,集合了众多运维工具(puppet、cfengine、chef、func、fabric)的优点,实现了 批量系统配置、批量程序部署、批量运行命令 等功能。ansible是基于 模块 工作的,本身没有批量部署的能力。真正具有批量部署的是ansible所运行的模块,ansible只是提供一种框架。主要包括: (1)、连接插件connection plugins:负责和被监控端实现通信; (2)、host inventory:指定操作的主机,是一个配置文件里面定义监控的主机; (3)、各种模块核心模块、command模块、自定义模块; (4)、借助于插件完成记录日志邮件等功能; (5)、playbook:剧本执行多个任务时,非必需可以让节点一次性运行多个任务。 3.ansible的架构:连接其他主机默认使用 ssh协议 ansible环境安装部署 管理端:192.168.35.100 被管理端:192.168.35.101 被管理端:192.168.35.102 所有管理端关闭防火墙

How to get current hostname from Ansible module?

ⅰ亾dé卋堺 提交于 2020-01-26 04:40:10
问题 I'm developing custom Ansible module to control Vagrant controlled multiple VM nodes on multiple VM servers following guide https://docs.ansible.com/ansible/latest/dev_guide/developing_modules_general.html. As far as I understand, Ansible iterates over all specified target hosts and executes run_module on them, allowing to module.run_command on each host. But I need to know on which host I am executing current command. I can add remote_host={{ inventory_hostname }} to MODULE_ARGS ( -a option

Ansible自动化运维(四)playbooke之roles应用(部署apache和zabbix)

别说谁变了你拦得住时间么 提交于 2020-01-26 03:01:41
一、前言 关于roles的介绍   roles能够根据层次型结构自动装在变量文件、tasks以及handlers等。要使用roles只需要在playbook中使用 include指令即可。简单来讲,roles就是通过分别将变量、文件、任务、模板及处理器放置于单独的目录中,并可以便捷地include它们的一种 机制。角色一般用于基于主机构建服务的场景中,但也可以是用于构建守护进程等场景中。   在某些复杂的场景中建议使用roles,代码复用度高:     1. 变更指定主机或主机组     2. 如 命名不规范维护和传承成本大     3. 某些功能需多个Playbook,通过includes即可实现 上一篇博客是关于playbooks的使用以及练习,相信可以体会到playbooks中,将所有的操作于模块全放到一个文件中,显得很乱,此时就有了roles。 其实roles的作用 就相当于将playbook拆分成一个个分开的文件,显示的更有结构化 roles目录结构及其作用   每个角色,以特定的层级目录结构进行组织 roles/project/ # 项目名称,有以下子目录 tasks / # 定义task,role的基本元素,至少应该包含一个名为main.yml的文件;其它的文件需要在此文件中通过include进行包含 files/ # 存放由copy或script模块等调用的文件

How to create ansible galaxy roles in windows?

亡梦爱人 提交于 2020-01-26 02:17:24
问题 I am learning ansible from ansible-beginner to pro by micheal heap. It seems that ansible is not supported on windows. The book suggests running ansible from a virtual machine instead. I started a VMbox using vagrant, which has ubuntu/trusty64 on it. I am successfully able to run my playbooks on it. However, I ran into an issue when creating ansible-galaxy roles. I could not find a way to create/ initialize a role on windows. I vaguely borrowed ideas from this question How to automatically

ansible——组织变量

末鹿安然 提交于 2020-01-25 18:05:35
在ansible中有很多种定义变量的方式,我们没必要去关注太多,只需要掌握几个常用的变量定义和应用方式即可,这篇文章记录的是将变量定义在外部文件中,然后去引入这些外部文件中的变量。 引入保存了变量的文件有两种方式:include_vars和vars_files。此外,还可以在命令行中使用“-e”或“--extra-vars”选项来引入。 1、vars_files vars_files是一个play级别的指令,可用于在解析playbook的截断引入一个或多个保存了变量的外部文件。 例如,pb.yml文件如下: --- - name: play1 hosts: node gather_facts: false vars_files: - varfile1.yml - varfile2.yml tasks: - debug: msg: "var in varfile1: {{var1}}" - debug: msg: "var in varfile2: {{var2}}" pb.yml文件通过vars_files引入了两个变量文件,变量文件的语法格式如下: [root@ansible roles]# cat varfile1.yml #第一个变量文件内容如下 --- var1: "value1" var11: "value11" [root@ansible roles]# cat

passwords in user module ANSIBLE

本小妞迷上赌 提交于 2020-01-25 10:14:07
问题 I'm trying to solve a little problem that I'm having at this moments. I make a little playbook to generate users in multiple machines with the same UID and groups. but when i try to pass the password as extra variable ansible response: [WARNING]: The input password appears not to have been hashed. The 'password' argument must be encrypted for this module to work properly. At this moment I am using ansible with jenkins. This is the playbook (debuging) --- - name: Create New Users hosts: "{{svr

ansible multiple with_items and loop on all hosts in inventory group

爱⌒轻易说出口 提交于 2020-01-25 09:40:28
问题 Team, I have a situation where I need to execute multiple commands on multiple hosts. for singular host case am fine with below but how to iterate the same over multiple hosts? - name: "SMI Tests for ECC singlebit and double bit codes " command: "smi --xml-format --query | grep retired_count | grep -v 0" ignore_errors: no register: _smi_ecc_result failed_when: _smi_ecc_result.rc == 0 delegate_to: "{{ item }}" with_items: "{{ groups['kube-gpu-node'] }}" Now, i have more commands to execute how

ansible安装配置及基本用法

青春壹個敷衍的年華 提交于 2020-01-25 02:38:00
ansiblle具有如下特点: 1、部署简单,只需在主控端部署Ansible环境,被控端无需做任何操作; 2、默认使用SSH协议对设备进行管理; 3、主从集中化管理; 4、配置简单、功能强大、扩展性强; 5、支持API及自定义模块,可通过Python轻松扩展; 6、通过Playbooks来定制强大的配置、状态管理 7、对云计算平台、大数据都有很好的支持;redis配置文件:这样写可以获取到客户机的ipv4地址,bind {{ ansible_default_ipv4.address }} 1 安装ansible Ansible仓库默认不在yum仓库中,因此我们需要使用下面的命令启用epel仓库。 yum install epel-release -y yum install ansible -y 2. ansible命令参数 anisble命令语法: ansible [-i 主机文件] [-f 批次] [组名] [-m 模块名称] [-a 模块参数] ansible详细参数: -v,–verbose # 详细模式,如果命令执行成功,输出详细的结果 (-vv –vvv -vvvv) -i PATH, -inventory=PATH # 指定 host 文件的路径,默认是在 /etc/ansible/hosts inventory [ˈɪnvəntri] 库存 -f NUM,

ansible批量部署(一)

大憨熊 提交于 2020-01-25 00:42:28
自动化运维工具 shell脚本/Ansible(无客户端)/Saltstack(master-minion) 回顾服务器部署的流程: 买云主机->环境部署->软件部署->配置部署->启动服务->测试->加入集群 1.Ansible基本概述 ansible是一个配置管理系统configuration management system你只需要可以使用ssh访问你的服务器或设备就行 Ansible能做什么 可以帮助我们完成一些批量任务,或者完成一些需要经常重复的工作。 Ansible软件特点 1.ansible不需要单独安装客户端,SSH相当于ansible客户端 2.ansible不需要启动任何服务,仅需安装对应工具即可 3.ansible依赖大量的python模块实现批量管理 4.ansible配置文件/etc/ansible/ansible.cfg Ansible基础架构 1.连接插件(connector plugins)用于连接主机 用来连接被管理端 2.核心模块(core modules)连接主机实现操作,它依赖于具体的模块来做具体的事情 3.自定义模块(custom modules)根据自己的需求编写具体的模块 4.插件(plugins)完成模块功能的补充 5.剧本(playbooks) ansible的配置文件,将多个任务定义在剧本中,由ansible自动执行 6

Ansible AWS dynamic inventory connection not working

拈花ヽ惹草 提交于 2020-01-24 20:48:07
问题 I am trying to configure a server on AWS using ansible with a dynamic inventory script. I created an ec2 instance which works fine and which I can manually ssh into. However, when trying to reach the instance (just to ping or to install software) I run into trouble. ansible -i ec2.py all -m ping xx.xx.xx.xx | FAILED! => { "changed": false, "failed": true, "module_stderr": "Shared connection to xx.xx.xx.xx closed.\r\n", "module_stdout": "/bin/sh: 1: /usr/bin/python: not found\r\n", "msg":