1

##ansible自动化运维架构与简介

 1 year ago
source link: https://blog.51cto.com/u_15397018/5543641
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

##ansible自动化运维架构与简介

推荐 原创

韦建国 2022-08-04 13:45:10 博主文章分类:Linux ©著作权

文章标签 linux 执行过程 默认值 文章分类 Linux 系统/运维 聊一聊WuKong编辑器 阅读数377

一、ANSIBLE介绍

1、什么是ansible

ansible是一个自动化运维工具,基于Python开发,集合了众多运维工具(puppet、cfengine、chef、func、fabric)的优点,实现了批量系统配置、批量程序部署、批量运行命令等功能。

2、ansible的历史

Ansible 工具由供应服务器应用程序 Cobbler 的作者 Michael DeHaan 开发,他是 Fedora 统一网络控制器(Func)远程管理框架的共同作者。

红帽于 2015 年 10 月收购了 Ansible。

Ansible 是 Red Hat 旗下的 Fedora Linux 发行版的一部分,也可以通过 Extra Linux for Enterprise Linux(EPEL)以及其他操作系统用于 Red Hat Enterprise Linux,CentOS,Scientific Linux 和 Oracle Linux。

##ansible自动化运维架构与简介_linux

3、Ansible有很多重要的优势:

  • 跨平台支持:Ansible为物理、虚拟、云和容器环境中的Linux、Windows、UNIX和网络设备提供无代理支持。
  • 人类可读的自动化:Ansible Playbooks以YAML文本文件的形式编写,易于阅读,并有助于确保每个人都理解他们将做什么。
  • 应用程序的完美描述:Ansible Playbooks可以做出每一个更改,应用程序环境的每一个方面都可以描述和记录。
  • 易于管理的版本控制:Ansible Playbooks和项目是纯文本。 它们可以像源代码一样处理,并放在现有的版本控制系统中。
  • 支持动态清单:Ansible管理的机器列表可以从外部来源动态更新,以便随时获取所有被管理服务器的正确的当前列表,无论基础设施或位置如何。
  • 可与其他系统轻松集成的编排:HP SA、Puppet、Jenkins、Red Hat 卫星和其他存在于您环境中的系统可以被利用和集成到您的Ansible工作流程中。
    4、ansible工作原理
##ansible自动化运维架构与简介_linux_02

二、安装ansible

1.关闭防火墙

setenforce 0
systemctl stop firewalld

##ansible自动化运维架构与简介_执行过程_03

##ansible自动化运维架构与简介_执行过程_04

2.修改主机名

hostname ansible /client

##ansible自动化运维架构与简介_执行过程_05

3.修改映射文件

vim /etc/hosts

##ansible自动化运维架构与简介_linux_06

4、下载epel-release软件包

yum -y install epel-release

##ansible自动化运维架构与简介_执行过程_07

5、安装ansible

yum -y install ansible

##ansible自动化运维架构与简介_执行过程_08

6、创建SSH面交互登录
(1)发送密钥需要passwd和yes

ssh-keygen -t rsa
##ansible自动化运维架构与简介_默认值_09
##ansible自动化运维架构与简介_linux_10

复制密钥到其他机器

ssh-copy-id 192.168.253.128
##ansible自动化运维架构与简介_linux_11

复制密钥时忽略passwd和yes(一键复制)

sshpass -p passwd ssh -p 用户名@主机IP -o StrictHostKeyChecking=no

##ansible自动化运维架构与简介_默认值_12

三、使用ansible

1、写inventory(相当于/etc/ansible/hosts)

里面就是主机的localhost或者ip

vim inventory
web1.example.com
web2.example.com
db1.example.com
db2.example.com
192.0.2.42

2、写ansible.cfg

vim ansible.cfg
[defaults]
inventory = ./inventory
remote_user = user
ask_pass = false

[privilege_escalation]
become = true
become_method = sudo
become_user = root
become_ask_pass = false

inventory

指定目录文件的路径。

remote_user

在被管理主机上登录的用户名。如果未指定,使用当前用户名。

ask_pass

是否提示SSHpasswd。可以如果使用SSH公钥认证,则为false。

become

是否自动切换被管用户连接后的主机(通常到root)。这也可以是戏剧指定的:戏剧指定的。

become_method

如何切换用户(通常是sudo,这是默认的,但是su是一个选项)。

become_user

在托管主机上切换到的用户(通常是Root,这是默认值)。

become_ask_pass

是否提示为你的become_method输入passwd。 默认值为false。

[defaults]

设置Ansible操作的默认值

[privilege_escalation]

配置Ansible对managed的权限升级方式主机

优先级最高的,还是自己创建的ansible.cfg

3、ansible的adhoc

ansible all -m ping

在ansible外面直接执行模块
注:
Ansible的返回结果非常友好,一般会用三种颜色来表示执行结果:红色,绿色和橘黄色,
①其中红色表示执行过程中有异常,
②橘黄色表示命令执行后目标有状态变化,
③绿色表示执行成功且没存对目标机器做修改。
参数的含义:

  • -v(–verbose):输出详细的执行过程信息,可以得到执行过程所有信息
  • -i PATH(–inventory=PATH):指定inventory信息,默认为/etc/ansible/hosts
  • -f NUM(–forks=NUM):并发线程数,默认为5个线程。
  • –private-key=PRIVATE_KEY_FILE指定秘钥文件,(不经常使用)
  • -m NAME,–moudle-name=NAME:指定执行时使用的模块·
  • -M DIRECTORY (–module-path=DIRECTORY):指定模块存放路径,默认为/usr/share/ansible,也可以通过ANSIBLE_LIBRARY设定默认目录。(不经常使用)
  • -a ARGUMENTS ( --args=ARGUMENTS):指定模块参数。
  • -u USERNAME (–user=USERNAME);指定远程主机 USERNAME运行命令
  • -l subset (–limit=SUBSET):限定运行主机,
  • –list-hosts:列出符合条件的主机列表,不执行任何命令

4、Ansible 基础模块

• copy: Copy a local file to the managed host-

软件包模块

• yum: Manage packages using the YUM package manager

• firewalld: Manage arbitrary ports and services using firewalld

Net Tools模块

• get_url: Download files over HTTP, HTTPS, or FTP

5、ansible-doc

ansible-doc用来查询ansible模块文档的说明(帮助文档),类似于man命令

##ansible自动化运维架构与简介_linux_13

(1)列出支持的模块

ansible-doc -l
##ansible自动化运维架构与简介_默认值_14
ansible-doc -s command
##ansible自动化运维架构与简介_执行过程_15
ansible-doc -s raw
##ansible自动化运维架构与简介_linux_16
ansible-doc -s ping
##ansible自动化运维架构与简介_默认值_17

6、ansible-playbook

Ansible-playbook是日常应用中使用频率最高的命令,类似于Linux系统中的sh或source命令,用来执行系列任务,其工作机制是,通过读取编写好的 playbook文件实现集中处理任务,ansible-playbook命令后跟yml或者yaml格式的playbook文件,playbook文件存放了要执行的任务代码。

playbook核心元素

  • Hosts:执行的远程主机列表
  • Tasks:任务集
  • Varniables: 内置变量或自定义变量在playbook中调用
  • Templates:模板,可替换模板文件中的变量并实现一些简单逻辑的文件
  • Handlers 和 notity 结合使用,由特定条件触发的操作,满足条件才执行,否则不执行
  • Tags:标签 指定某条任务执行,用于选择运行playbook中的部分代码,ansible具有幂等性,因此会自动跳过没有变化的部分,即便如此,有些代码为测试其确实没有发生变化的时间依然会非常地长,此时,如果确信其没有变化,就可以通过tags跳过此些代码片段
语法: ansible-playbook playbook.yml

检查语法是否错误

ansible-playbook --syntax-check webserver.yml

7、ansible-console虚拟终端

ansible-console是 ansible为用户提供的一款交互式工具,类似于 Windows中的cmd以及Linux中的shell,用户可以在 ansible-console虚拟出来的终端上做像shell一样使用ansible内置的各种命令,这为习惯于使用 shell交互方式的用户提供了良好的体验,在终端输入ansible-console命令后显示如下。

##ansible自动化运维架构与简介_linux_18

所有的操作类似于shell,而且支持Tab键补全,按快捷键Ctrl+D或Ctrl+C即可退出当前虚拟终端

8、 ansible-galaxy

ansible-galaxy指令用于方便的从https://galaxy.ansible.com/站点下载第三方扩展模块
创建rolrs目录架构

ansible galaxy init 目录

9、 ansible-vault

ansible-vault主要应用于配置文件中含有敏感信息,又不希望他能被人看到,vault可以帮你加密/解密这个配置文件,属高级用法。主要对于playbooks里比如涉及到配置passwd或其他变量时,可以通过该指令加密,这样我们通过cat看到的会是一个passwd串类的文件,编辑的时候需要输入事先设定的passwd才能打开。这种playbook文件在执行时,需要加上 --ask-vault-pass参数,同样需要输入passwd后才能正常执行。

10、 ansible-pull

该指令使用需要谈到ansible的另一种模式---pull 模式,这和我们平常经常用的push模式刚好相反,其适用于以下场景:你有数量巨大的机器需要配置,即使使用非常高的线程还是要花费很多时间;你要在一个没有网络连接的机器上运行Anisble,比如在启动之后安装。

四、一些常见的命令

输出facts变量的内容

ansible 主机 -m setup

创建加密变量文件

ansible-vault create secret.yml

查看加密变量文件

ansible-vault view secret1.yml

编辑加密变量文件

ansible-vault edit secret.yml

可以使文件加密

ansible-vault encrypt secret1.yml secret2.yml

解密变量文件

ansible-vault decrypt secret1.yml --output=secret1-decrypted.yml

更改加密文件的passwd

ansible-vault rekey secret.yml

执行加密变量文件

ansible-playbook --vault-id @prompt site.yml
  • 2
  • 1收藏
  • 评论
  • 分享
  • 举报

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK