ansible copy模块_ansible超详细讲解,值得收藏

本文详细介绍了Ansible,一个开源的配置管理工具,用于自动化任务和部署应用程序。内容涵盖Ansible的安装、配置文件加载顺序、主机清单、连接方式、ad-hoc命令、常用模块(如yum、copy、get_url、file、git等)、变量的使用、任务控制(条件判断、循环、触发器、标签、包含、错误处理)、Jinja模板和Roles的使用。文章还提到,Ansible拥有丰富的模块和插件,可以在Galaxy网站上找到预定义的角色,便于快速部署。
摘要由CSDN通过智能技术生成

如果做过运维或者网站开发的朋友,一定接触过服务部署,那么一般的服务部署流程是什么呢?找一台Linux机器,安装好运行环境所需要的软件,然后把服务部署上去。一台机器可以这么做,如果是集群呢?每一台都要这么做。假如我们管理了几百台机器,突然有一天公司要求在所有机器上都安装某一款软件,那么手动显然是不行的,这个时候就必须要借助自动化脚本来完成这项任务了。

自动化执行的方式有很多种,最原始的就是shell脚本,但是显然它不能满足我们的需求。常见自动化配置管理工具有很多种,slatstack和ansible是比较流行的两种,而且它们都是用python开发的,但是相对来讲ansible的优势更加明显,主要是因为它拥有大量的模块和插件,而且你在GitHub和gitee上也可以找到很多别人写好的编排剧本,基本拿过来就可以使用了。

ec3823e33b52b6c6605ec4067172cffb.png

Ansible简介

尽管我认为当你看这篇文章的时候,可能对ansible有了至少一丁丁了解,但是简单的介绍还是要说一下的。Ansible是一个开源配置管理工具,可以使用它来自动化任务,部署应用程序实现IT基础架构。Ansible可以用来自动化日常任务,比如,服务器的初始化配置、安全基线配置、更新和打补丁系统,安装软件包等。

Ansible安装

  • Centos
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repowget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repoyum clean allyum makecacheyum install -y ansible
  • Ubuntu
apt-get install software-properties-commonapt-add-repository ppa:ansible/ansibleapt-get updateapt-get install ansible
  • pip安装
pip install ansible

pip这种方式是最方便的,毕竟我们一般都安装了Python,但是可能会有一个问题,安装完以后,我们找不到配置文件,使用ansible --version查看发现config file是none,导致我们没法正常使用,这是为什么呢?因为ansible加载配置文件的路径是有顺序的。

ansible.cfg文件加载顺序

ansible.cfg文件作为配置文件,ansible会在多个路径下进行读取,读取的顺序如下:

  • ANSIBLE_CONFIG:环境变量
  • ansible.cfg:当前执行目录下
  • .ansible.cfg:~/.ansible.cfg
  • /etc/ansible/ansible.cfg

所以推荐使用方式是创建一个工程目录,将所有的配置文件都放置在此目录下,这样更方便移植。在ansible.cfg中有如下内容:

[defaults]inventory = ./hostshost_key_checking = False

所以我们使用pip安装后,在主机上通过find命令查找到ansible.cfg,默认会安装到python目录下,将其复制到当前执行目录即可。

配置文件有三个:

  1. ansible.cfg --ansible的配置文件,一般我们都使用默认配置,只需要改增加一个host_key_checking=False,不使用指纹验证。指纹验证就是当我们在一台Linux机器上ssh登录另一台Linux时,第一次连接会让我们输入Yes/No
  2. hosts --主机文件清单
  3. roles --一个配置角色的文件夹,默认里面是空的

配置Ansible主机清单

清单配置中文文档

主机清单通常用来定义要管理的主机信息,包括IP、用户、密码以及SSH key配置。可以分组配置,组与组之间可以配置包含关系,使我们可以按组分配操作主机。配置文件的路径为:/etc/ansible/hosts

基于密码的方式连接

vim /etc/ansible/hosts

# 方式一[web]192.168.133.111 ansible_ssh_user=root ansible_ssh_pass=123456192.168.133.112 ansible_ssh_user=root ansible_ssh_pass=123456192.168.133.123 ansible_ssh_user=root ansible_ssh_pass=123456# 方式二[web]192.168.133.111192.168.133.112192.168.133.123[web:vars]ansible_ssh_user=root ansible_ssh_pass=123456# 方式三[web]192.168.133.111192.168.133.112192.168.133.123# 在/etc/ansible目录下创建目录group_vars,然后再创建文件web.yml,以组名命名的yml文件vim /etc/ansible/group_vars/web.yml# 内容如下ansible_ssh_user: rootansible_ssh_pass: 123456

测试命令

ansible web -a 'ls /'
d38a95e433bca12dd3add441568954b5.png

基于SSH key方式连接

以下命令均在ansible主机执行,无需到被管理机器操作

# 生成ssh key,一路回车,默认生成在/root/.ssh目录下id_rsa和id_rsa.pubssh-keygen# 将公钥拷贝到目标主机ssh-copy-id root@192.168.143.132# 执行以上语句,并输入密码,会在目标主机生成一个文件/root/.ssh/authorized_keys# 之后再连接目标主机就不需要密码了

ad-hoc命令

ad-hoc是临时命令,就像我们执行的shell命令一样,执行完即结束,ad-hoc模式的命令格式如下:

ansible web -m command -a 'df -h'

命令解释:

  • ansible:命令
  • web:主机名/IP/分组
  • -m:指定模块(默认是command,所以可以把-m command这个去掉)
  • command:模块名称
  • -a:模块参数
  • 'df -h':参数值

执行命令返回的结果颜色代表的含义:

绿色:被管理端没有被修改

黄色:被管理端发生变更

红色:执行出现故障

常用模块介绍

ansible官方存在大量的模块,我们使用ansible主要使用的也是因为它有大量的模块和插件,虽然模块很多,但是我们常用的模块就那么几种,下面介绍以下常用模块:

d93c34991d6f83c03e49f7e33c6e864f.png

yum命令

5a84bf8e83567854fb73592a07655f97.png

示例:

# 安装最新版的Apacheansible web -m yum -a "name=httpd state=latest"# congepel仓库安装罪行的Apacheansible web -m yum -a "name=httpd state=latest enablerepo=epel"# 删除Apache软件包ansible web -m yum -a "name=httpd state=absent"

copy命令

a271a9fa56489d35b4a5636a0524e6d7.png

示例:

# 拷贝apache配置文件到目标机器ansible web -m copy -a "src=httpd.conf dest=/etc/httpd/conf/httpd.conf owner=root group=root mode=644"# 拷贝apache配置文件到目标机器,并备份目标文件ansible web -m copy -a
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值