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

网友投稿 795 2022-09-02

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

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

一、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。

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

二、安装ansible

1.关闭防火墙

setenforce 0systemctl stop firewalld

2.修改主机名

hostname ansible /client

3.修改映射文件

vim /etc/hosts

4、-epel-release软件包

yum -y install epel-release

5、安装ansible

yum -y install ansible

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

ssh-keygen -t rsa

服务端

客户端

复制密钥到其他机器

ssh-copy-id 192.168.253.128

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

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

三、使用ansible

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

里面就是主机的localhost或者ip

vim inventoryweb1.example.comweb2.example.comdb1.example.comdb2.example.com192.0.2.42

2、写ansible.cfg

vim ansible.cfg[defaults]inventory = ./inventoryremote_user = userask_pass = false[privilege_escalation]become = truebecome_method = sudobecome_user = rootbecome_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

(1)列出支持的模块

ansible-doc -l

ansible-doc -s command

ansible-doc -s raw

ansible-doc -s ping

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虚拟终端

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

8、 ansible-galaxy

ansible-galaxy指令用于方便的从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

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:PHP+Ajax实现的博客文章添加类别功能
下一篇:zabbix自定义图形
相关文章

 发表评论

暂时没有评论,来抢沙发吧~