Linux自动化运维工具ansible的使用详细教程
介绍
Ansible是一款非常流行和易于使用的自动化运维工具,它可以通过SSH协议进行配置安装、部署、编排和管理,能够帮助运维人员更加高效地完成各种任务。
本教程旨在帮助初学者快速入门Ansible,并了解它的基本概念和常用命令,以及如何将其与其他工具和服务集成。
准备工作
在开始使用Ansible之前,需要在控制主机和被控制主机上安装Ansible,同时需要在控制主机上配置SSH密钥,以便自动登录被控制主机。
安装Ansible
在控制主机上,可以使用以下命令安装Ansible(假设你的操作系统为Ubuntu):
sudo apt-get update
sudo apt-get install ansible
配置SSH密钥
在控制主机上,可以使用以下命令生成SSH密钥:
ssh-keygen
然后将公钥复制到被控制主机上:
ssh-copy-id user@remote_host
Ansible配置文件
Ansible的配置文件为ansible.cfg,默认情况下位于/etc/ansible/ansible.cfg文件中,也可以在当前目录下的ansible.cfg文件进行配置。
以下是ansible.cfg文件的一些常用配置:
[defaults]
host_key_checking = False # 不检查主机密钥
inventory = /etc/ansible/hosts # 定义主机清单文件路径
remote_user = root # 远程登录用户
主机清单文件
主机清单文件是Ansible用来定义被控制主机的文件,在c/Users/Administrator/Documents目录下新建文件名为hosts文件,添加以下内容:
[web]
172.24.1.101
172.24.1.102
[db]
172.24.1.103
[web]和[db]分别是组名,其下面的IP地址为对应的主机地址。将hosts文件放到/etc/ansible/目录下即可。
Ansible使用
Ad-Hoc命令
Ad-Hoc命令是最简单和快速执行的Ansible命令,它可以在不使用Playbook的情况下直接在命令行中执行临时任务。
以下是Ad-Hoc命令的基本格式:
ansible [-i inventory] [-u remote_user] [-b] [-m module] [-a "module arguments"] hostname/pattern
- -i 指定主机清单文件路径
- -u 指定远程登录用户
- -b 使用sudo权限
- -m 指定Ansible模块名称
- -a 指定模块参数
- hostname/pattern 指定要执行Ad-Hoc命令的主机或主机组
例如,在所有web主机上安装Nginx:
ansible -i /etc/ansible/hosts -u root -m apt -a "name=nginx state=installed" web
Playbook
Playbook是Ansible的一种配置文件格式,可以用来定义复杂的任务和自动化流程。以下是一个简单的Playbook示例:
---
- name: 安装Nginx
hosts: web
become: true
tasks:
- name: 安装Nginx
apt:
name: nginx
state: installed
在上面的示例中,name表示Playbook名称,hosts表示执行任务的主机组,become表示是否使用sudo权限执行任务,tasks表示要执行的任务列表。在tasks中,使用apt模块安装Nginx。
要执行上面的Playbook,可以使用以下命令:
ansible-playbook -i /etc/ansible/hosts playbook.yml
其中,playbook.yml为Playbook文件的名称。
示例一
在所有的主机上安装apache服务器
首先在主机清单文件中定义所有的主机
all:
hosts:
server1:
ansible_host: 192.168.1.110
ansible_user: root
ansible_ssh_pass: 'password'
server2:
ansible_host: 192.168.1.111
ansible_user: root
ansible_ssh_pass: 'password'
使用 ansible all -a "apt-get update"
更新所有主机的apt。
在Playbook中使用如下代码块指定要在每个主机上安装Apache Web Server:
- hosts: all
become: yes
tasks:
- name: Install Apache
apt: name=apache2 state=latest
最后 ansible-playbook myplaybook.yml
执行 playbook。
示例二
在Ubuntu 服务器上为MySQL创建新用户
在主机清单文件中定义 MySQL 服务器。指定连接到_ssh_user@192.168.1.100。
[database]
192.168.1.100
在Playbook中使用如下代码块创建MySQL数据库和用户:
- name: Install mysql server
hosts: database
become: yes
vars:
mysql_root_password: 'rootpassword'
mysql_user: 'new_user'
mysql_user_password: 'userpassword'
mysql_database: 'newdatabase'
tasks:
- name: Creating database {{ mysql_database }}
mysql_db:
login_host: 192.168.1.100
login_password: '{{ mysql_root_password }}'
name: '{{ mysql_database }}'
- name: Creating user {{ mysql_user }}
mysql_user:
name: '{{ mysql_user }}'
password: '{{ mysql_user_password }}'
login_host: 192.168.1.100
login_password: '{{ mysql_root_password }}'
priv: '*.*:ALL,GRANT'
最后 ansible-playbook myplaybook.yml
执行 Playbook。
总结
通过学习本教程,你已经了解了如何安装和配置Ansible,如何使用Ad-Hoc命令和Playbook,以及如何将其与其他工具和服务集成。
除了本教程中提到的功能和命令之外,Ansible还提供了更多高级功能,例如变量、模板、条件语句等。如果你想深入学习Ansible,请查看官方文档并参考更多实用案例。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:linux 自动化运维工具ansible的使用详细教程 - Python技术站