ansible初识
Ansible是一种自动化工具,用于配置管理、应用程序部署和任务自动化。它基于Python语言开发,使用SSH协议进行通信,并且不需要在被管理的主机上安装任何客户端。Ansible使用简单的YAML语言来描述任务和配置,使得操作简单、易于理解。
Ansible的主要特点包括:
-
简单易用:Ansible使用YAML语言来定义任务和配置,具有简单、直观的语法,使得操作起来非常容易。同时,Ansible提供了丰富的模块和插件,可以方便地完成各种任务。
-
基于SSH协议:Ansible使用SSH协议进行通信,不需要在被管理的主机上安装任何客户端。这意味着可以更好地保护系统安全,同时也降低了管理工作的复杂度。
-
基于代理:Ansible可以通过代理服务器来管理无法直接访问的主机,如跳板机、防火墙后的主机等。这样可以实现对整个网络的统一管理,提高了灵活性和可扩展性。
-
基于模块化:Ansible提供了丰富的模块和插件,可以用于完成各种任务,如安装软件、配置系统、部署应用程序等。同时,Ansible允许用户编写自定义模块和插件,满足特定需求。
-
可扩展性:Ansible支持多主机和多组主机管理,可以轻松应对大规模环境。同时,Ansible还支持分布式部署和高可用性配置,提供了高效的管理解决方案。
总之,Ansible是一种功能强大、易于使用的自动化工具,适用于各种场景,可以简化管理工作,提高效率。无论是小规模还是大规模环境,Ansible都可以帮助您轻松管理和部署系统。
ansible命令
以下是一些常见的ansible命令:
-
ansible <host-pattern> -m <module>
:运行ansible模块在指定的主机上。 -
ansible-playbook <playbook.yml>
:运行ansible playbook。 -
ansible <host-pattern> --list-hosts
:列出匹配主机模式的主机。 -
ansible <host-pattern> --inventory-file=<inventory-file>
:指定使用的清单文件。 -
ansible <host-pattern> -a <command>
:在远程主机上运行命令。 -
ansible <host-pattern> -e <extra-vars>
:传递额外的变量给playbook或命令。 -
ansible <host-pattern> --limit=<limit>
:限制适用的主机数量。 -
ansible <host-pattern> --tags=<tags>
:只运行指定的标签。 -
ansible <host-pattern> --skip-tags=<tags>
:跳过指定的标签。 -
ansible <host-pattern> --start-at-task=<task-name>
:从指定的任务开始运行。 -
ansible <host-pattern> --check
:进行干运行,检查可能对主机造成的变化。 -
ansible <host-pattern> --diff
:在执行任务之前显示文件的差异。 -
ansible <host-pattern> --become
:使用sudo或类似特权升级。 -
ansible <host-pattern> --become-user=<user>
:以指定的用户身份运行命令。 -
ansible-doc <module>
:查看模块的文档。
1、4台虚拟机,1台作为主控端,3台被控端,虚拟机1使用ansible对被控端服务器进行ping测试
192.168.99.130
yum install ansible
编辑/etc/hosts
192.168.99.132 h1
192.168.99.144 h2
192.168.99.118 h3
/etc/ansible/hosts 添加
h1
h2
h3
ssh-keygen -t rsa
ssh-copy-id root@192.168.99.132
ssh-copy-id root@192.168.99.144
ssh-copy-id root@192.168.99.118
ansible h1,h2,h3 -m ping
2、将2、3分为一组A,4单独分为一组B进行ping测试
[A]
h1
h2
[B]
h3
ansible A,B -m ping
3、有一个大组包含了组A和B的所有主机,进行ping测试
[A]
h1
h2
[B]
h3
[gr1:children]
A
B
ansible gr1 -m ping
4、在234三台机的tmp目录下创建一个文件
ansible gr1 -m command -a 'touch /tmp/test'
5、修改所有主机的yum源为aliyun源
ansible gr1 -m yum_repository -a 'name=base baseurl=http://mirrors.aliyun.com/centos/7/os/x86_64/ description=ali_repo gpgcheck=no enabled=yes state=present'
ansible gr1 -m yum_repository -a 'name=epel baseurl=https://mirrors.aliyun.com/epel/7/x86_64/ enabled=yes gpgcheck=no gpgcakey=https://mirrors.aliyun.com/epel/RPM-GPG-KEY-EPEL-7 description=epel_repo state=present file=AlicloudEpel'
6、远程安装httpd、nginx、ntpdate
ansible gr1 -m yum -a 'name=httpd,nginx,ntpdate'