ansible学习笔记
*Ansible**测试题*
*题目一:安装和配置Ansible*
*任务描述:*
在CentOS系统上安装Ansible,并配置一个inventory文件,包含至少两台远程主机(可以使用虚拟机或云服务器)。
*要求:*
\1. 安装Ansible,并确保其版本不低于2.9。
yum install ansible -y
\2. 创建一个inventory文件,命名为hosts.ini,并添加两台远程主机的IP地址,分别属于不同的组(例如web_servers和db_servers)。
首先进vi /etc/ansible/ansible.cfg 修改inventory
我是在/etc/ansible/ 这里建了一个hosts.ini文件 touch hosts.ini #可以根据你自己对应的路径修改
vi /etc/ansible/hosts.ini
添加以下内容:
[web_servers]
192.168.100.107 ansible_user=root ansible_ssh_pass=123456 #从机的ip地址以及免密登录配置
[db_servers]
192.168.100.108 ansible_user=root ansible_ssh_pass=123456 #从机的ip地址以及免密登录配置
\3. 使用ansible -m ping命令测试与远程主机的连接。
测试所有主机连通
*题目二:编写Playbook安装软件*
*任务描述:*
编写一个Ansible Playbook,用于在远程主机上安装nginx和mariadb-server软件包。
*要求:*
\1. 创建一个名为install_software.yml的Playbook文件。
touch install_software.yml
注:三台机子互通配置完hosts再往下做
hosts配置如下:
\2. 使用yum模块安装nginx和mariadb-server。
在两台机器上执行 yum install mariadb-server nginx -y
\3. 确保安装任务在web_servers组的主机上执行nginx的安装,在db_servers组的主机上执行mariadb-server的安装
编写配置文件
运行命令 ansible-playbook install_software.yml 执行 编写好的playbook
web_servers测试
可以看到能开启服务了
db_servers上测试
成功安装并且能看到版本
*题目三:配置Nginx服务器*
*任务描述:*
继续使用Ansible,配置已安装的Nginx服务器,使其能够托管一个简单的静态网页。
*要求:*
\1. 在你的本地机器上创建一个名为index.html的文件,内容自定义,例如“Welcome to my Ansible-configured Nginx server!”。
touch index.html vi index.html
\2. 编写一个Playbook,将index.html文件复制到web_servers组主机的/usr/share/nginx/html目录下
\3.
\5. 成功复制
\6.
\7. 确保Nginx服务在配置完成后重新启动,以应用新的网页内容
关闭防火墙去浏览器访问 对应的web_servers主机的IP
systemctl restart nginx
systemctl stop firewalld
可以看到内容了
*题目四:使用变量和模板*
*任务描述:*
使用Ansible的变量和模板功能,动态配置Nginx的/etc/nginx/conf.d/default.conf配置文件。
*要求:*
\1. 在Playbook中定义变量,用于指定Nginx监听的端口和服务器名称。
\2. 使用Jinja2模板创建一个nginx_config.j2文件,根据变量动态生成Nginx配置内容。
\3. 编写任务,将模板文件应用到远程主机上,并确保Nginx服务重新加载配置。
编写nginx_config.j2文件
vi nginx_config.j2
编写 playbook
vi nginx_config.yml
运行:
cat /etc/nginx/conf.d/default.conf
在/usr/share/nginx/html目录下建一个的test.html 和我们j2文件对应的html文件 写入内容
打开网站可以看到配置生效了
*题目五:配置MariaDB服务器*
*任务描述:*
使用Ansible配置MariaDB服务器,创建一个数据库和一个用户,并授权该用户访问该数据库。
*要求:*
\1. 在db_servers组的主机上安装并启动MariaDB服务。
\2. 创建一个名为mydatabase的数据库。
\3. 创建一个名为myuser的用户,密码为mypassword。
\4. 授权myuser用户从任何主机访问mydatabase数据库,并具有所有权限。
编写playbook
vi db_servers_mariadb.yml
执行
执行过程如果遇到fatal: [192.168.100.108]: FAILED! => {“changed”: false, “msg”: “unable to find /root/.my.cnf. Exception message: (1045, u"Access denied for user ‘root‘@’localhost’ (using password: NO)")”}这个报错就要去db_servers建一个
/root/.my.cnf并且输入以下内容
可以看到已经有数据库了
并且其它主机也能访问了
*题目六:使用角色管理配置*
*任务描述:*
将上述配置任务封装成Ansible角色,以便更好地管理和复用配置。
*要求:*
\1. 创建一个名为nginx_role的角色,包含安装Nginx、配置Nginx和复制静态网页的任务。
ansible-galaxy init nginx_role 创建一个nginx_role角色
vi /etc/ansible/nginx_role/tasks/main.conf #编写它们的任务文件
\2. 创建一个名为mariadb_role的角色,包含安装MariaDB、创建数据库和用户、授权用户访问数据库的任务。
ansible-galaxy init mariadb_role
vi /etc/ansible/mariadb_role/tasks/main.conf #编写它们的任务文件
\3. 编写一个Playbook,使用这两个角色来配置远程主机。
vi use.yml
ansible-playbook use.yml
执行成功