ansible基础使用使用

运维工具的分类:

agent: puppet, func

agentless: ansible(ssh通信), fabric

ansible:模块化,调用特定的模块,完成特定的任务;基于Python语言实现,由Paramiko、PyYAML和Jinja2三个关键模块;

配置文件:

/etc/ansible/ansible.cfg

默认主机清单:/etc/ansible/hosts,添加主机/主机组

open-ssh

基于密钥的认证;

(1) 在本地主机生成一对儿密钥:

ssh-keygen  [-q]  [-b bits]  [-t type]  [-f output_keyfile] [-P passphrase]

-t  {rsa|ecdsa|dsa}:公钥加密算法类型;rsa默认2048        [-N new_passphrase]

-b bits:指明密钥长度;

-P passphrase:私钥加密密码;

-f output_keyfile:生成密钥的保存位置;

(2) 在本地主机上,将公钥复制到要登录的远程主机的某用户的家目录下的特定文件中(~/.ssh/authorized_keys)

ssh-copy-id  [-i [identity_file]]  [-p port]  [-o ssh_option]  [[email protected]]hostname

eg: ssh-copy-id -i .ssh/id_rsa.pub [email protected]  /root/.ssh/id_rsa.pub

复制秘钥至对应主机:

ansible ping模块测试远程主机是否能通信:

用法:ansible <host-pattern> [-f forks] [-m module_name] [-a args],arg:可以有多个参数key=value

注:注意:command/shell模块要执行命令无须为key=value格式,而是直接给出要执行的命令即可

ansible-doc: Show Ansible module documentation查看模块文档:

-l, --list            List available modules

-s, --snippet         Show playbook snippet for specified module(s)展示模块使用片段

如:查看user的用法:ansible-doc -s user 会列出user的使用参数;

yum  :管理yum程序包

-a 'name= state={present|latest|absent}'name=:程序名称可带版本号

service:程序服务管理

-a 'name= state={started|stopped|restarted} enabled=0|1'    runlevel= 默认2345

shell:在远程主机在shell进程下运行命令,支持shell特性如管道

-a 'COMMAND'

script:脚本

-a '/path/to/scrip'

setup  Gathers facts about remote hosts 内置变量

eg: ansible web -m setup 查询web主机的内置变量 参数

.....

编写playbook.yaml文件来执行任务:

playbook的基础组件:

Hosts:运行指定任务的目标主机 可以是多个主机,:号分隔

remoute_user:在远程主机上执行任务的用户

sudo_user:用户已何种身份运行

tasks:任务列表 幂等性,若某个任务失败即终止

模块,模块参数

格式:两种

(1)action:module argument

(2)module:arguments  建议这种格式更通用

某任务的状态在运行后为changed时,可以通过“notify"通知给相应的handlers;任务可以通过“tags”打标签,而后可用ansible-playbook -t name调用

eg:给web主机创建用户组agroup,并添加auser用户:

playbook运行方式:ansible-playbook : Runs Ansible playbooks, executing the defined tasks on the targeted hosts.

用法:ansible-playbook [options] playbook.yml [playbook2 ...]

-C, --check: dry-run模式 测试可能发生改变

--list-hosts 列出运行的主机

-t --tags only run plays and tasks tagged with these values

eg:编辑一个任务安装httpd提供配置文件并启动:

验证结果:

handles:任务在特定条件下触发;接收到其他任务通知

如定义:notify 某任务的状态在运行后为changed时,可以通过“notify"通知给相应的handlers

如修改httpd.conf listen 80:

检测运行结果conf文件发生改变,并触发事件,但发现任务每执行一次都会全部运行一遍:

改进:给tags标签指定运行某段程序:,如不指定任何tag,则会全部都运行一遍.也可以命名标签一样,表示都运行,可以有多个标签;

在notify:前添加:    tags:changes arg

运行ansible-playbook -t name 指明运行:

variables:

1.facts :可直接调用 内置变量 由 setup模块提供

2.ansible-playbook命令行中的自定义变量

3.通过roles传递变量

4.Host Inventory  在/etc/ansible/hosts中编辑

template:jinja2,文本文件,嵌套有脚本使用模板编程语言;

在template中调用变量,在hosts主机中IP 后添加变量:port =808

远程主机中已发生变化:

条件测试:根据主机操作系统或者其他配置不一样提供不同配置,安装不同配置,安装程序包源

when语句:在task中使用,jinja2语法

task:判断系统版本提供不同的配置文件

- name:install conf file to centos7

template: src=files/nginx.conf.c7.j2 dest=/etc/nginx/nginx.conf

when:  ansible_distribution_major_version=="7"

- name: install conf file to centos6

template:  src=files/nginx.conf.c6.j2

when:  ansible_distribution_major_version="6"

循环:迭代,需要重复执行 的任务,对迭代项引用,固定变量名为“item”而后,要在task中使用with_item给定要迭代的元素列表

列表方法:字符串、字典

注:编写playbook时比较容易出错的地方:“-  host”、模块后: argument之间有空格。

roles:

角色:roles定义不同的角色,根据需要调用不同的组件

roles/{mysql/ | httpd/ | nginx/...}

每个角色,以特定的层级结构进行组织:

mysql/

files/:存放由copy或script模块等调用的文件

templatess/template模块查找所需要模板文件的目录

tasks/:至少应该包含一个名为main.yml的文件,其他的文件需要在此文件中通过include进行包含;

handlers/:至少应该包含一个名为main.yml的文件,其他的文件需要在此文件中通过include进行包含

vars/:应当包含一个main.yml文件,用于定义此角色用到的变量;

meta/:至少应该包含一个名为main.yml的文件,定义当前角色的特殊设定及其依赖关系,其他的文件需要在此文件中通过include进行包含

default/:设定默认变量时使用此目录中的main.yml文件

创建role和使用的步骤

(1) 创建以roles命名的目录;

(2) 在roles目录中分别创建以各角色名称命名的目录,如webservers等;

(3) 在每个角色命名的目录中分别创建files、handlers、meta、tasks、templates和vars目录;用不到的目录可以创建为空目录,也可以不创建;

(4) 在创建的目录里编辑任务,将playbook的内容分解至各个目录

(5)编写playbook调用角色

在playbook调用角色:

-hosts:webs

remote_user:root

roles:

-mysql

-httpd

原文地址:http://blog.51cto.com/12580678/2140425

时间: 2024-08-30 13:30:38

ansible基础使用使用的相关文章

ansible基础

ansible 介绍:官网,百科之类的 ansible的部署 centos 6.5上的部署. 2.2.2.11 node1.king.com ansible 2.2.2.15 node3.king.com 2.2.2.12 node2.king.com tar xf ansible-1.5.4.tar.gz cd ansible-1.5.4 python setup.py build python setup.py install mkdir /etc/ansible cp -r example

关于ansible基础入门和功能实现教程的更新页面

最近发现MDT推出去的系统的有不同问题,其问题就不说了,主要是策略权限被域继承了.比如我们手动安装的很多东东都是未配置壮态,推的就默认为安全壮态了,今天细找了一下,原来把这个关了就可以了. 关于ansible基础入门和功能实现教程的更新页面

L13 ansible 基础应用与常见模块

ansible 基础应用与常见模块 ansible中文手册:http://www.simlinux.com/books/Ansible-notes.pdf 1,运维工具简介 运维工具: 系统安装(物理机.虚拟机)--> 程序安装.配置.服务启动 --> 批量操作(批量运行命令) --> 程序发布 --> 监控 ansible 能够实现:程序安装.配置.服务启动 --> 批量操作(批量运行命令) --> 程序发布 ansible的核心组件: ansible core ho

自动化运维工具之ansible基础入门

自动化运维工具常用的有 ansible  saltstack  puppet等 ,前两者都是基于python开发,puppet基于ruby开发,今天我们简单介绍下ansible基础 一.基础知识: 1. 简介 ansible基于python开发,集合了众多运维工具的优点,实现了批量系统配置.批量程序部署.批量运行命令等功能.ansible是基于模块工作的 (1) host inventory: 指定操作的主机,是一个配置文件里面定义监控的主机        (2) 各种模块核心模块.comman

ansible基础与部分模块应用

ansible基础与部分模块应用 1. ansible特性: ansible糅合了众多老牌运维工具的优点,基本上pubbet和saltstack能实现的功能全部能实现. 部署简单:不需要在被管控主机上安装任何客户端,操作客户端时直接运行命令. 基于python语言实现,有Paramiko, PyYAML和Jinja2三个关键模块. 模块化:调用特定模块完成特定任务.可使用任意语言开发模块,且支持自定义模块. 使用yaml语言定制剧本playbook. 基于SSH作 2. ansible的模块 c

ansible基础-安装与配置

一 安装 1.1 ansible架构 ansible是一个非常简单的自动化部署项目,由python编写并且开源.用于提供自动化云配置.配置文件管理.应用部署.服务编排和很多其他的IT自动化需求. ansible实现的自动化部署是多层次的,通过描述系统之间的逻辑关系来构建业务所需要的基础架构模型,而不仅仅用于管理一个单独的系统:也就是说ansible不仅仅能部署一个或多个独立的服务,它还能对这些服务做关联.对部署顺序做编排等,一个完美的ansible部署项目应该是层次分明.顺序有秩的. 另外,an

ansible基础-roles

一 简介 注:本文demo使用ansible2.7稳定版 在我看来,role是task文件.变量文件.handlers文件的集合体,这个集合体的显著特点是:可移植性和可重复执行性. 实践中,通常我们以部署某个服务为单元作为一个role ,然后将这些服务单元(role)放在一个roles目录下.主playbook文件通过调用roles目录下的role,来实现各种灵活多变的部署需求. 本节主要为大家介绍下roles的目录结构.引用方法及其他特性. 二 创建与目录结构 2.1 创建roles 通常创建

自动化运维工具-Ansible基础

目录 自动化运维工具-Ansible基础 自动化运维的含义 Ansible 基础及安装 Ansible的架构 Ansible的执行流程 ansible配置文件 ansible Inventory(主机清单文件) Ansible ad-hoc ansible常用模块 实战 自动化运维工具-Ansible基础 自动化运维的含义 1.手动运维时代 2.自动化运维时代 3.自动化运维工具给运维带来的好处 Ansible 基础及安装 1.什么是Ansible Ansible是一个自动化统一配置管理工具 2

Ansible基础知识

1.Ansible自动化配置管理 安装 配置 启动 nginx redhat红帽 ( 收购 ansible -->Ansible自动化运维配 置管理专家) 2.Ansible介绍及配置 #1.什么是ansible? 可以通过一个命令行完成一系列的操作. #2.ansible 优点 特点? #3.ansible 基础架构? 控制端 被控端 inventory ad-hoc playbook 连接协 议? #4.ansible 配置文件 优先级 ANSIBLE_CONFIG ansible.cfg

ansible基础—安装与常用模块

ansible介绍: ansible是一个基于python开发的轻量级自动化运维管理工具,可以用来批量执行命令,安装程序,支持playbook编排.它通过ssh协议来连接主机,省去了在每一台主机安装客户端的麻烦,相对比puppet和saltstack,显得更为简单和轻量. ansible命令参数: Usage: ansible <host-pattern> [options] Options:   -a MODULE_ARGS, --args=MODULE_ARGS