Ansible的安装和部署

一、环境搭建

两台可以通信的主机ansible和node1,都具有完整的软件仓库。

主控机	ansible	172.25.254.107
受控机	node1	172.25.254.207

二、Ansible的作用

ansible是新出现的自动化运维工具,基于Python开发,集合了众多运维工具(puppet、cfengine、chef、func、fabric)的优点,实现了批量系统配置、批量程序部署、批量运行命令等功能。ansible是基于模块工作的,本身没有批量部署的能力。

三、安装

1、方法一

epel源
在浏览器中搜索epel for linux,下载安装包到本地,安装即可。(此方法不建议,下载速度过慢)

wget https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm /mnt	##下载epel源
yumdoenloader ansible --destdir=/mnt --resolve		##安装ansible
dnf install sshpass-1.06-9.el8.x86_64.rpm -y		##下载依赖性
dnf install ansible-2.9.11-1.el8.noarch.rpm -y
ansible --version

2、方法二

直接下载镜像中不存在的依赖性软件。即复制两个安装包到本地某一目录中。
在这里插入图片描述
复制文件到主控机ansible下的/mnt目录中;
在这里插入图片描述查看是否下载完成;
在这里插入图片描述使用ansible --version查看ansible版本测试是否安装成功。
在这里插入图片描述

3、Ansible的基本信息

信息意义
/etc/ansible/ansible.conf全局配置文件,默认很少修改
/etc/ansible/hosts全局主机清单文件

在这里插入图片描述

四、构建Ansible清单

清单就是Ansible所控制的主机的列表
其中/etc/ansible/hosts即为全局清单文件

1、直接书写

直接书写受控主机名或ip,每行一个

node1.westos.com
172.25.254.207

未书写时不能列出清单内容,会显示清单内容为空的提示;
在这里插入图片描述/etc/ansible/hosts清单文件的最后添加受控主机ip,保存后退出;
在这里插入图片描述再次列出清单内容,显示207主机,但不能够ping通
在这里插入图片描述当要控制207主机时首先会在控制主机中生成py脚本,然后远程通过sshd服务传输到被控主机中在传文件过程中需要后者的认证通过才能访问和管理(访问成功会显示与ping相对应的pong)
在这里插入图片描述

2、设置受控主机的指定用户

(1)、在受控主机添加用户

注意要为新添用户设置密码,否则之后设置密匙时会报错
在这里插入图片描述(2)、在控制主机建立密钥和密匙
在这里插入图片描述(3)、在控制主机测试用户权限是否设置成功
在这里插入图片描述直接访问207主机显示权限有问题,使用用户devops用户访问成功,说明可以使用控制主机管理以devops用户身份运行的207主机
(4)、设置受控主机用户权限和免密访问
使用devops用户完成shell模块的内容会失败,原因是当前在207主机中运行指令是以devops这个普通用户的身份来执行的,权力会很小,需要在207受控主机下方权力
在这里插入图片描述权力下放并设置免密访问
在这里插入图片描述完成shell模块指令
在这里插入图片描述在这里插入图片描述

序号意义
1指定devops在执行命令时用sudo调用
2询问sudo密码
文件创建成功
在这里插入图片描述

3、设定受控主机的组

(1)、清单查看
ansible 清单中组名称  [-i 清单文件] --list-hosts
ansuible ungrouped --list-hosts
ansible all --list-hosts 

在这里插入图片描述在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

(2)、单层清单

各个清单相互独立,不会有相互重叠的ip或主机名称

[list1]
node1.westos.com
node2.westos.com
[list2]
node2.westos.com
[list3]
172.25.254.240

在这里插入图片描述列出指定组中的主机
在这里插入图片描述在这里插入图片描述

(3)、嵌套清单

一个主清单会包含另外一个或多个子清单

[westos:children]
list1
list3

在这里插入图片描述在这里插入图片描述

(4)、主机规格的范围化操作

通过指定主机名称IP范围可以简化Ansible主机清单

语法:
[start:end]
[westostest]
172.25.254.[100:108]


[root@ansible ansible]# ansible westostest --list-hosts
hosts (9):
172.25.254.100
172.25.254.101
172.25.254.102
172.25.254.103
172.25.254.104
172.25.254.105
172.25.254.106
172.25.254.107
172.25.254.108

在这里插入图片描述在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述在这里插入图片描述在这里插入图片描述

(5)、指定其他清单文件
vim inventory
172.25.254.240
[westostest]
172.25.254.100
172.25.254.200

测试:
ansible all -i inventory --list-hosts
ansible westostest -i inventory --list-hosts
ansible ungrouped -i inventory --list-hosts

ansible命令指定清单的正则表达式

符号意义
*所有
:逻辑或
:&逻辑与
:!逻辑非
~以关键字开头
~(str1str2)
172.25.254.*
westos*

westos1:linux
172.25.254.100:172.25.254.200

westos1:&linux
主机即在westos1清单也在linux清单中:! 

westos1:!linux
在westos1中不在linux中

在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述

举例:
vim /mnt/inventory
172.25.0.250
192.25.0.250
[westos_list1]
node1.westos.com
[westos_list2]
172.25.0.2
172.25.0.1
[westos_list3]
172.25.0.1
172.25.0.3
[westos_all:children]
westos_list2
westos_list3

五、Ansible配置文件参数详解

ansible 清单中组名称 -m 模块 -u remote_user

1.配置文件的分类与优先级

/etc/ansible/ansible.cfg
#基本配置文件,找不到其他配置文件此文件生效
~/.ansible.cfg
#用户当前目录中没有ansible.cfg此文件生效
./ansible.cfg
#优先级最高

2.常用配置参数

[default]	##基本信息设定
inventory=	##指定清单路径
remote_user=	##在受管主机上登陆的用户名称,未指定使用当前用户
ask_pass=		##是否提示输入SSH密码,如果公钥登陆设定为false
library=		 ##库文件存放目录
local_tmp=		##本机临时命令执行目录
remote_tmp=		##远程主机临时py命令文件存放目录
forks=		##默认并发数量	
host_key_checking=		##第一次连接受管主机时是否要输入yes建立host_key
sudo_user=		##默认sudo用户
ask_sudo_pass=		##每次在受控主机执行ansible命令时是否询问sudo密码
module_name=		##默认模块,默认使用command,可以修改为shell
log_path=			##日志文件路径

六、构建用户级Ansible操作环境

1、创建操作目录并编写文件
本操作需要先切换到107主机的普通用户
在这里插入图片描述
在这里插入图片描述2、复制ssh钥匙到当前用户
在这里插入图片描述3、生成密钥和密匙分别为107主机和207主机
在这里插入图片描述

在这里插入图片描述在这里插入图片描述4、测试是否安装ansible环境成功
在这里插入图片描述

  • 4
    点赞
  • 43
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要使用 Ansible 搭建商城,需要先了解商城的基本架构和组成部分。一般来说,一个商城包括前端、后端、数据库、缓存、负载均衡等组件。在 Ansible 中,可以通过编写 Playbook 来自动化部署这些组件。 下面是一个简单的 Ansible Playbook 示例,可以用于搭建一个基本的商城环境: ```yaml - hosts: web_servers become: yes vars: app_name: my_shop db_name: my_shop_db db_user: my_shop_user db_password: my_shop_password redis_port: 6379 tasks: - name: Install required packages apt: name: "{{ item }}" state: present with_items: - nginx - python-pip - python-dev - build-essential - libmysqlclient-dev - redis-server - name: Configure nginx template: src: nginx.conf.j2 dest: /etc/nginx/sites-available/{{ app_name }} notify: restart nginx - name: Create MySQL database mysql_db: name: "{{ db_name }}" state: present - name: Create MySQL user mysql_user: name: "{{ db_user }}" password: "{{ db_password }}" priv: "{{ db_name }}.*:ALL" state: present - name: Configure Django settings template: src: django_settings.py.j2 dest: /opt/{{ app_name }}/{{ app_name }}/settings.py - name: Install Python requirements pip: requirements: /opt/{{ app_name }}/requirements.txt - name: Start Gunicorn command: /opt/{{ app_name }}/venv/bin/gunicorn {{ app_name }}.wsgi:application --bind 127.0.0.1:8000 --workers 3 async: true - name: Configure Redis lineinfile: path: /etc/redis/redis.conf regexp: "^port" line: "port {{ redis_port }}" notify: restart redis - hosts: db_servers become: yes vars: db_name: my_shop_db db_user: my_shop_user db_password: my_shop_password tasks: - name: Install MySQL server apt: name: mysql-server state: present - name: Configure MySQL template: src: my.cnf.j2 dest: /etc/mysql/my.cnf notify: restart mysql - name: Create MySQL database mysql_db: name: "{{ db_name }}" state: present - name: Create MySQL user mysql_user: name: "{{ db_user }}" password: "{{ db_password }}" priv: "{{ db_name }}.*:ALL" state: present ``` 在这个 Playbook 中,我们假设有两台服务器,一台用于部署 Web 服务器,另一台用于部署数据库服务器。首先,我们安装了需要的软件包,包括 Nginx、Python、MySQL 等。然后,我们配置了 Nginx 和 Django 的相关设置。接着,我们创建了 MySQL 数据库和用户,并将相关信息写入 Django 的配置文件中。最后,我们启动了 Gunicorn 应用服务器和 Redis 缓存服务器。 注意,在这个 Playbook 中,我们使用了一些模板文件,例如 nginx.conf.j2、django_settings.py.j2 和 my.cnf.j2。这些模板文件可以根据实际情况进行修改,以适应不同的商城环境。 当然,这只是一个简单的示例,实际的商城环境可能更加复杂。但是,通过 Ansible 的自动化部署能力,我们可以大大简化部署过程,减少出错的可能性,提高部署的效率。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值