Ansible

本文详细介绍了Ansible的基础和高级用法,包括模块的使用、变量管理、错误处理、条件判断、循环任务以及角色(Roles)的应用。通过示例展示了如何使用Ansible进行批量系统配置、程序部署和命令执行,还涵盖了自动化部署web集群的步骤。
摘要由CSDN通过智能技术生成

自动化运维

Ansible基础

简介:Ansible首次发布于2012年,作者Michael DeHaan

  • Michael DeHaan也是cobbler的作者
    -于2015年被redhat收购
    Ansible是一款自动化运维工具,基于pyhon开发
    -批量系统配置
    -批量程序部署
    -批量运行命令等功能
    -基于ssh架构
    -模块丰富
    -社区活跃
    -支持自定义模块
    -支持异构it架构
    -部署简单,容易上手

ansible原理:
控制端主机自带很多模块(模块就是脚本);
ansible通过ssh远程被管理主机,将控制端的模块(脚本)或命令传输到被管理主机;
在被管理端主机执行模块(脚本)或命令,执行不同的模块或命令可以实现不同的功能;
最后ansible退出ssh远程。
主配置文件说明:
主配置文件ansible.cfg(主配置文件的内容可以参考/etc/ansible/ansible.cfg)
ansible配置文件查找顺序
1)首先检测ANSIBLE_CONFIG变量定义的配置文件(默认没有这个变量)
2)其次检查当前目录下的./ansible.cfg文件
3)再次检查当前用户家目录下~/ansible.cfg文件
4)最后检查/etc/ansible/ansible.cfg文件
mkdir Ansible //创建Ansible目录
vim ansible/ansible.cfg //书写主配置文件
[defaults]
inventory=~/ansible/ansible.cfg
vim ~/ansible/inventory
[test]
node1
[proxy]
node2
[webserver]
node[3:4]
[database]
node5
[cluster:children] //嵌套组children是关键字
test
database
ssh远程实现免密登录
ssh-keygen -f /root/.ssh/id_rsa -N ‘’
for i in node1 node2 node3 node4 node5
do
ssh-copy-id $i
done
[root@control ansible]# ansible all --list-hosts //查看所有主机列表
sudo权限
主配置文件:/etc/sudoers
-授权方法
方法一:visudo(带语法检查,默认没有颜色提示)
方法二:vim /etc/sudoers(不带语法检查,默认有颜色提示)
授权格式如下:
用户或组 主机列表=(提权身份) [NOPASSWD]:命令列表
//命令需要写绝对路径,对组授权需要在组名称前面加%
-普通用户以sudo的形式执行命令
-查看授权情况:sudo -l

[defaults]
inventory = ~/ansible/hosts
remote_user = alice //以什么用户远程被管理主机
[privilege_escalation]
become = true //是否需要切换用户
become_method = sudo //如何切换用户
become_user = root //切换成什么用户
become_ask_pass = no //sudo是是否需要输入密码
YAML
YAML格式的要求:
"#"代表注释,一般第一行为三个横杠(—)
键值对使用“:“表示,数组使用”-“表示
key和value之间使用”:"分隔
":"后面必须有空格
一般缩进由两个或以上空格组成
相同层级的缩进必须对齐,缩进代表层级关系
全文不可以使用tab键
区分大小写
扩展名为yml或者yaml
跨行数据需要使用>或者|,其中|会保留换行符

ping模块:
failed失败 connect连接 via通过
[root@control ansible]# ansible node5 -m ping
command模块: command不支持bash的特性,如管道和重定向等功能,但是shell模块可以支持。命令模块
[root@control ansible]# ansible node5 -m command -a “uptime” //查看CPU负载
[root@control ansible]# ansible-doc -l #列出所有模块
[root@control ansible]# ansible-doc -l | grep yum #在所有模块中过滤关键词
[root@control ansible]# ansible-doc yum #查看模块帮助
script模块:执行及脚本模块
[root@control ansible]# ansible node5 -m script -a “hello.sh”
Shell模块:支持管道和重定向等功能

[root@control ansible]# ansible node5 -m shell -a "ps aux | wc -l //查看进程数
file模块:file模块可以创建文件、目录、链接;修改权限与属性等
[root@control ansible]# ansible node5 -m file -a “path=/opt/123.txt state=touch”
[root@control ansible]# ansible node5 -m file -a “path=/opt/123.txt owner=tome group=tome mode=7777”
copy模块:copy模块可以将文件拷贝到远程主机 (ansible-doc copy)。
fetch模块:fetch模块与copy类似,但是作用相反,可以将其他主机的文件拷贝到本地(ansible-doc fetch)。
[root@control ansible]# ansible node5 -m copy -a “src=/root/ansible/s.txt dest=/opt” //本地拷贝到远程
[root@control ansible]# ansible node5 -m fetch -a “src=/opt/s.txt dest=/opt” //远程拷贝到本地
lineinfile|replace模块:在修改单个文件的单行内容时可以使用lineinfile模块(ansible-doc lineinfile)
[root@control ansible]# ansible node5 -m lineinfile -a “path=/opt/s.txt line=‘hello world’” //添加一行
[root@control ansible]# ansible node1 -m replace -a “path=/etc/hosts regexp=127.0.0.1 replace=192.168.4.11” //将/etc/hosts 文件中的127.0.0.1替换成192.168.4.11

user模块:user模块可以实现Linux系统账户管理
[root@control ansible]# ansible node1 -m user -a “name&

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值