Ansible的简介及部署

1. ansible简介

1.1 什么是ansible

ansible是一款开源自动化平台,是一个配置管理工具,自动化运维工具

1.2 ansible的优点

  1. 跨平台支持
  2. 人类可读自动化: ansible提供linux,Windows,unix和网络设备的无代理支持,适用于物理、虚拟、云和容器环境
  3. 完美描述应用:playbook
  4. 轻松管理版本控制:playbook是纯文本,可视作源代码
  5. 支持动态清单
  6. 编排可与其他系统轻松集成:puppet、jenkins
  7. 基础架构即代码
  8. 减少人为错误

运行playbook时,如果目标主机处于正确状态,则不会进行任何更改。

1.3 安装ansible
1. 在虚拟机上安装ansible,充当控制节点

yum install -y ansible

2. 查看ansible版本信息

ansible --version

 

3. 使用setup模块验证python

ansible localhost -m setup | grep python_version

 

2. 部署ansible

2.1 构建ansible清单

  • 清单:定义了ansible将要管理的一批主机

2.1.1. 静态清单

注:如果填写的是主机名,请确保可以解析主机名(/etc/hosts)

每行一个,填写主机名或ip,如:

还可以定义主机组:

注:一台主机可以存在于多个主机组'

2.1.2 定义嵌套组

ansible主机清单可以包含多个主机组构成的组,如:

2.1.3 通过范围简化主机规格

可以指定主机名称或ip范围或者数字和字母范围


2.1.4 验证清单

ansible all --list-hosts

2.1.5 默认清单位置

  • /etc/ansible/hosts    #一般不使用,而是自己新建

2.1.6 动态清单

可以从开源社区的脚本中获取

练习:

列出清单中所有受管主机

ansible all --list-hosts

列出不属于某个组的主机

ansible ungrouped --list-hosts

 

列出属于webservers组的主机

ansible dbservers --list-hosts

 

自定义清单

mkdir demo    #建立目录

列出主机


2.2 管理ansible配置文件

2.2.1 配置ansible

配置文件:

  1. /etc/ansible/ansible.cfg    #基本配置文件,如果找不到其他配置文件,使用这个
  2. ~/.ansible.cfg        #如果存在此文件且当前工作目录中没有ansible.cfg,此文件替代/etc/ansible/ansible.cfg
  3. ./ansible.cfg        #当前目录中的ansible.cfg,优先级最高


显示使用的配置文件

ansible dbservers --list-hosts -v

管理配置文件中的设置:

  • [defaults]        #部分设置ansible操作的默认值
  • [privilege_escalation]    #配置ansible如何在受管主机上执行特权升级

例:

vim ansible.cfg


注:如果登录的不是root用户,可以使用sudo进行权限下放。且做好免密登录
 

2.3 运行临时命令

使用临时命令可以快速测试和更改,不需要编写playbook

2.3.1 格式:

  • ansible host-pattern -m module [-a 'module arguments'] [-i inventory]

2.3.2 检查能否在受管主机上运行python模块


2.3.3 使用临时命令通过模块执行任务

  • ansible-doc -l    #列出所有模块
  • ansible-doc ping    #查看ping模块帮助文档

ansible模块
文件模块:    -copy:将本地文件复制到受管主机
        -file:设置文件的权限和其他属性
        -lineinfile:确保特定行是否在文件中
        -synchronize:使用rsync同步内容

系统模块:    -firewalld:使用firewalld管理任意端口和服务
        -reboot:重启 
        -service:管理服务
        -user:添加、删除和管理用户账户

Net Tools模块:    -get_url:通过http、https、或者ftp下载文件
        -nmcli:管理网络
        -uri:与web服务交互


例:

使用user模块确保huayu用户存在于server1.huayu.com 且 uid=1000

通过ansible的command模块,在受管主机上运行命令:

ansible 加上-o参数,单行显示

注:command模块允许执行远程命令,但这些命令不是shell处理,无法访问shell环境变量,所以不能执行重定向、传送等操作

使用command模块执行临时命令

ansible localhost -m command -a 'id'

ansible localhost -m command -a 'id' -u student    #通过-u选项使用huayu用户进行连接并执行id命令

 

使用copy模块

1.首先使用student用户,因为huayu用户没有写权限,会失败

ansible localhost -m copy -a 'content="westos ansible\n" dest=/etc/motd' -u student

2.使用特权升级

 

使用主机组一次更改server1和server2


可以看到server1显示SUCCESS,server2显示CHANGED,因为server1已经处于正确状态


查看


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部