美文网首页
自动化运维之ansible入门

自动化运维之ansible入门

作者: b77bb494e846 | 来源:发表于2018-11-29 16:27 被阅读0次

写博客主要是为了自己方便看,在这个过程中顺便把看到的一些技术点记录下来,加强自己的记忆。

Ansible基本知识

简介

高度模块化,调用特定的模块,完成特定的任务,基于Yaml,来完成批量任务的模板化,来支持playbook。基于Python语言实现,主要使用Paramiko、PyYAML和JinJa2三个关键模块,部署简单(agentless),主从模式,支持自定义模块,支持playbook,幂等性:允许重复执行N次,没有变化时,只会执行第一次。

基本组

主要由模块、插件、主机群、以及剧本的组成,各部分含义如下:
1.核心模块(core modules):Ansible 自带的模块。
2.自定义模块(custom Modules):如果核心模块不足以完成某种功能,可以自行添加自定义模块(支持市面上大部分的编程语言)。
3.插件(Plugins):支持使用插件的方式对ansible本身的功能进行扩展。模块是用来实现任务的,增强ansible平台自己的功能就需要使用插件(loggin插件记录日志,email插件发送邮件)
  - 其中最常用是:连接插件(Connectior Plugins) :ansibile基于连接插件连接到各个主机上,虽然默认情况下ansible使用ssh连接到各个主机上,但它还支持其他的连接方法(mq)。
4.主机群(Host Inventory): 主机清单,定义ansible管理的主机,还可以存放一下针对不同主机的变量,也可以写入主机的用户名和密码
5.剧本(playbooks):ansible的任务配置文件,将多个任务定义在剧本中,由ansible自动执行

运行原理:把命令翻译成shell命令,拷贝到目标主机(/root/.ansible/tmp/下),再执行,执行完毕后删除tmp文件。ansible底层给予Python,以简单著称,配置文件格式也以INI和yaml为主。

下载方式

CentOs系列主机:

apt-get install  -y ansible

RedHat系列主机:

yum install -y ansible

Mac下载:

brew install ansible
//也可以使用python的安装命令pip安装:
pip install ansible

Ansible配置文件解析

Inventory用于定于Ansible的主机列表配置,Ansible的自身配置文件只有一个,即ansible.cfg,Ansible安装好之后默认存放在/etc/ansible/目录下。

ansible 查找 Ansible.cfg 文件遵循以下顺序:

1、ANSIBLE_CONFIG环境变量指定的配置文件
2、当前目录下的ansible.cfg文件
3、当前用户home目录下的.ansible.cfg文件
4、Ansible默认的/etc/ansible/ansible.cfg文件

ansible.cfg中常用的配置

- inventory:指定inventory文件的路径
- remote_user:SSH连接时使用的用户名
- remote_port:SSH连接时使用的端口号
- private_key_file:SSH连接时使用的私钥文件
- roles_path:查找roles的路径,可以指定多个查找路径,多个路径之间用冒号分隔
- log_path:Ansible的日志文件路径
- host_key_checking:类似于ssh命令中的StrictHostKeyChecking选项,当等于False时,不检查远程主机是否存在于Konw_hosts文件中
- forks:并行进程的数量
- gathering:控制收集Facts变量的策略

ssh相关

- ssh_args:可以通过这个参数控制Ansible的ssh连接
- pipelining: 多个task之间共享SSH连接,开启pipelining能够有效提升Ansible的执行速度
- control_path:保存ControlPath socket的路径

权限相关

- become:是否进行权限提升
- become_method:权限提升的方式,默认为sudo
- become_user:提升为哪个用户的权限,默认为root
- become_ask_pass:默认为False,表示权限提升时不需要密码(设置为true时,手动输入密码,或者配置ansible_become_pass变量)

Inventory文件配置的变量及参数:

[nginx]
127.0.0.1 ansible_ssh_user=root ansible_ssh_host=web1 # 更细致的配置
 
    - ansible_ssh_user : 用于指定管理远程主机的帐号
    - ansible_ssh_host : 用于指定被管理的主机
    - ansible_ssh_port :用于指定ssh的端口
    - ansible_ssh_private_key_file :指定key文件
    - host_key_checking=False :当第一次连接主机时,会提示yes/no,跳过此次环节
[test]                    # 用于定义主机组,all表示所有主机,所以尽量避免使用all作为组名
127.0.0.1                 # 该组的主机列表,可以是主机名(dns解析)或者IP地址,或者用符号来表示连续的主机
192.168.1.[80:88]         # 表示 192.168.1.80 - 192.168.1.88<br><br>[web:children]            # 表示子组<br>nginx                     # nginx组<br>test                      # test组

Ansible命令用法

Ansible命令行的执行方式有Ad-Hoc、Ansible-playbook两种方式,Web化执行方式官方提供了付费产品Tower(10台内免费),个人的化可以基于其提供的API开发类似的Web化产品。这里我们详细说命令后执行的两种方式。

Ad-Hoc主要用于临时命令的执行,Ansible可以理解为Ad-Hoc的集合,通过一定的规则编排在一起。

ansible Ad-Hoc命令主要参数信息

-v, --verbose:输出更详细的执行过程信息,-vvv可以得到执行过程所有信息。
-u : remote user,默认使用root用户登陆
-i : Inventory,指定主机,默认是/etc/ansible/hosts
-m :指定模块的名称(不指定-m,那么默认是command模块)
-a : 模块的参数(比如使用command模块,那么-a参数就是要执行的命令)
-k : 用来提示输入远程主机的密码(基于用户密码登录)
-f : 一次执行几个进程(并发数量),默认为5个
--sudo : 执行命令时使用 sudo 权限(需要用户具有sudo权限)
--key-file: 建立SSH链接的私钥文件
--list-hosts: 列出匹配到的服务器列表
# 基于主机清单:
ansible -i /etc/ansible/hosts test -u root -m command -a 'ls /home' -k (ansible 依赖 sshpass)
|
--> ansible test -a 'ls /home' -k    #ansible不指定-m参数,会默认使用command模块
 
# 上面两条命令默认状态下效果相同
 
# 我们知道ansible通过ssh的方式来远程管理多台主机,所以我们需要使用ssh key的方式来进行ssh认证,当然你也可以使用ansible的时候加上-k,来通过交互式输入密码。当有了ssh key以后,那么我们就可以直接使用ansbile来执行任务了,比如:ansible all -m ping
 
# 基于主机:
ansible 127.0.0.1 -m ping

Ansible系列命令用法详解及使用场景介绍

在终端输入ansible后连续按两次Tab键,会补全所以ansible字母开头的命令,主要有下列命令:

  • absible
  • ansible-galaxy
  • ansible-pull
  • ansible-doc
  • ansible-playbook
  • ansible-vault
  • ansible-console

我们主要说ansible、ansible-playbook两个命令,其余的后续再讲解。

Ansible

ansible命令是日常工作中使用率非常高的命令之一,主要在一下场景中使用:

  • 非固化需求
  • 临时一次性操作
  • 二次开发调用接口

那么什么是非固化需求和临时一次性操作呢?简单来讲,工作中临时想查看某一组服务器是否存活,或者想临时复制本地的文件到服务器组上做测试,类如这些没有规律的、临时需要做的任务,我们称为非固化需求、临时一次性操作。

//检查服务器存活
ansible web -m ping
//复制文件到远程服务器
ansible web -m copy -a "src=/etc/fstab dest=/tmp/fstab ower=root group=root mode=644 backup=yes"

ansible-playbook

ansible-playbook是日常应用中使用频率最高的命令,其工作机制是:通过读取预先编写好的playbook文件实现批量管理。实现的功能与命令ansible一样,可以理解为按照一定条件组成的ansible任务集。

ansible-play命令使用方式如下:

//执行playbook.yml这个playbook中定义的所以任务集
ansible-playbook playbook.yml

相关文章

  • CentOS7 Ansible自动化运维

    企业级自动化运维神器Ansible 一、介绍 1.自动化运维工具对比 2.ansible简介 ansible是新出...

  • Asible了解,配置,部署

    一、ansible 简介 1、ansible 是什么?ansible是目前最受运维欢迎的自动化运维工具,基于Pyt...

  • 06Ansible服务

    第一章 Ansible介绍 0.手工运维与自动化运维 1.手动运维时代 2.自动化运维 1.什么是Ansible ...

  • ansible 自动化运维工具

    什么是ansible ansible是目前最受运维欢迎的自动化运维工具,基于Python开发,集合了众多运维工具(...

  • Ansible Module 快速入门 ad-hoc

    1.自动化运维的含义 1.手动运维时代 2.自动化运维时代 3.自动化运维工具给运维带来的好处 2.Ansible...

  • 干货:一文详解 Ansible 的自动化运维

    一、Ansible 概述 Ansible 是近年来越来越火的一款开源运维自动化工具,通过Ansible可以实现运维...

  • Ansible服务

    第一章 Ansible介绍 0.手工运维与自动化运维 1.手动运维时代 2.自动化运维 3.自动化运维带来的好处 ...

  • Ansible服务

    第一章 Ansible介绍 1.手工运维与自动化运维 1.手动运维时代 2.自动化运维 3.自动化运维带来的好处 ...

  • Linux_298_运维自动化介绍

    运维自动化介绍 ansible自动化运维人工运维时代:运维人员早期需要维护数量众多的机器,因此需要执行反复,重复的...

  • Ansible学习——基本概念 day1

    基础概念 1.ansible是什么?ansible是目前最受运维欢迎的自动化运维工具,基于Python开发,集合了...

网友评论

      本文标题:自动化运维之ansible入门

      本文链接:https://www.haomeiwen.com/subject/mpjfcqtx.html