前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Ansible自动化工具快速入门实践

Ansible自动化工具快速入门实践

作者头像
yuanfan2012
发布2021-03-16 15:41:18
6170
发布2021-03-16 15:41:18
举报
文章被收录于专栏:WalkingCloud

Ansible自动化工具快速入门实践

ansible入门简单实践

1、Ansible是什么

Ansible是一种IT自动化工具。它可以配置系统,部署软件以及协调更高级的IT任务,例如处理配置管理,应用程序部署,持续部署,滚动更新。

Ansible适用于管理企业IT基础设施,从具有少数主机的小规模到数千个实例的企业环境。

Ansible也是一种简单的自动化语言,可以完美地描述IT应用程序基础结构

2、Ansible基本概念术语

  • 控制节点(Control node):指安装了Ansible的主机,也叫Ansible服务器端,管理机。Ansible控制节点主要用于发布运行任务,执行控制命令。Ansible的程序都安装在控制节点上,控制节点需要安装Python和Ansible所需的各种依赖库。注意:目前Ansible还不能安装在Windows下。
  • 受控节点(Managed nodes):也叫客户机,就是想用Ansible执行任务的客户服务器。
  • 清单(Inventory):受控节点的列表,就是所有要管理的主机列表。host文件:清单列表通常保存在一个名为host文件中。在host文件中,可以使用IP地址或者主机名来表示具体的管理主机和认证信息,并可以根据主机的用户进行分组。缺省文件:/etc/ansible/hosts,可以通过-i指定自定义的host文件。
  • 模块(Modules):模块是Ansible执行特定任务的代码块。比如:添加用户,上传文件和对客户机执行ping操作等。Ansible现在默认自带450多个模块,,Ansible Galaxy公共存储库则包含大约1600个模块。
  • 任务(Task):是Ansible客户机上执行的操作。可以使用ad-hoc单行命令执行一个任务。
  • 剧本(Playbook):是利用YAML标记语言编写的可重复执行的任务的列表,playbook实现任务的更便捷的读写和贡献。比如,在Github上有大量的Ansible playbooks共享,你能找到大量的宝藏。
  • 角色(roles):角色是Ansible 1.2版本引入的新特性,用于层次性、结构化地组织playbook。roles能够根据层次型结构自动装载变量文件、tasks以及handlers等

3、ansible命令执行过程

1). 加载自己的配置文件 默认/etc/ansible/ansible.cfg

2). 加载自己对应的模块文件,如command

3). 通过ansible将模块或命令生成对应的临时py文件,并将该文件传输至远程服 务器的对应执行用户$HOME/.ansible/tmp/ansible-tmp-数字/XXX.PY文件 4). 给文件+x执行

5). 执行并返回结果

6). 删除临时py文件,退出

• 执行状态:

绿色:执行成功并且不需要做改变的操作

黄色:执行成功并且对目标主机做变更

红色:执行失败

4、Ansible常用模块

•执行shell命令(command和shell)

•文件传输(copy和file)

•管理软件包(yum)

•用户和组(user)

•从源代码管理系统部署(git)

•管理服务(service)

•收集目标主机信息(setup)

ansible入门简单实践

1、基础环境如下

代码语言:javascript
复制
master 192.168.198.200
node1 192.168.198.201
node2 192.168.198.202
node3 192.168.198.203

(图片可放大查看)

2、主控节点上安装ansible

代码语言:javascript
复制
yum install ansible

(图片可放大查看)

(图片可放大查看)

3、配置SSH密钥身份验证(免密登录)

设置用于节点鉴权的SSH密钥

代码语言:javascript
复制
ssh-keygen -b 2048 -t rsa
ssh-copy-id root@192.168.198.201
ssh-copy-id root@192.168.198.202
ssh-copy-id root@192.168.198.203

(图片可放大查看)

(图片可放大查看)

3、创建Ansible主机清单

代码语言:javascript
复制
vi /etc/ansible/hosts
例如加入如下行
主机组vm_servers
[vm_servers]
192.168.198.201
192.168.198.202
192.168.198.203

(图片可放大查看)

代码语言:javascript
复制
ansible all --list-hosts
ansible vm_servers  --list-hosts

(图片可放大查看)

4、ansible命令格式:

代码语言:javascript
复制
ansible <host-pattern> [-m module_name] [-a args]

5、简单介绍ansible的几个模块使用

1)、检查主机的连通性

代码语言:javascript
复制
ansible vm_servers -m ping
ansible all -m ping

(图片可放大查看)

2)、command模块

command:在远程主机执行命令;不支持|管道命令

代码语言:javascript
复制
ansible vm_servers -m command -a 'df -PTh'
ansible vm_servers -m command -a 'uptime'
ansible vm_servers -m command -a 'uname -r'

(图片可放大查看)

(图片可放大查看)

3)、shell模块

shell模块在远程主机上调用shell解释器运行命令,支持shell的各种功能,例如管道

代码语言:javascript
复制
ansible vm_servers -m shell -a 'lscpu | grep Intel'
ansible vm_servers -m shell -a 'cat /etc/passwd | grep root'

(图片可放大查看)

4)、copy模块

代码语言:javascript
复制
ansible vm_servers -m copy -a "src=/opt/init_centos7_v2.sh dest=/opt/"

(图片可放大查看)

(图片可放大查看)

(图片可放大查看)

5)、yum模块

yum安装软件

代码语言:javascript
复制
ansible vm_servers -m yum -a 'name=htop state=present'

(图片可放大查看)

(图片可放大查看)

yum卸载软件

代码语言:javascript
复制
ansible vm_servers -m yum -a 'name=iftop state=absent'

(图片可放大查看)

6)、service模块

代码语言:javascript
复制
ansible vm_servers -m service  -a 'name=rsyslog state=restarted'

(图片可放大查看)

(图片可放大查看)

上面只列举了几个基本模块的使用 ,一些复杂任务需要使用 Ansible playbooks

公众号后台回复【Ansible】获取Ansible培训PPT及word文档等相关文件

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-02-26,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 WalkingCloud 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • ansible入门简单实践
    • 1、Ansible是什么
      • 2、Ansible基本概念术语
        • 3、ansible命令执行过程
          • 4、Ansible常用模块
            • 1、基础环境如下
              • 2、主控节点上安装ansible
                • 3、配置SSH密钥身份验证(免密登录)
                  • 4、ansible命令格式:
                    • 5、简单介绍ansible的几个模块使用
                      • 1)、检查主机的连通性
                      • 2)、command模块
                      • 3)、shell模块
                      • 4)、copy模块
                      • 5)、yum模块
                      • 6)、service模块
                  相关产品与服务
                  持续部署
                  CODING 持续部署(CODING Continuous Deployment,CODING-CD)用以管理软件在经过构建之后的发布和部署交付过程,可以无缝对接上游 Git 仓库、制品仓库实现全自动化部署,同时支持 Webhook 等外部对接能力,方便集成各种开发、运维工具。在配以合适的技术架构、运维工具的基础上,可以方便地实现蓝绿发布、灰度发布(金丝雀发布)、滚动发布、快速回滚等功能。
                  领券
                  问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档