ansible 搭建

本文详细介绍了Ansible自动化运维工具的工作机制,包括控制节点、主机清单、剧本、模块及连接插件等核心组件。深入解析了Ansible在CentOS7环境下的安装步骤,从YUM安装、pip和wheel辅助工具的配置,到cryptography库的升级,以及ssh密钥的生成与管理主机的配置。同时,提供了ansible.cfg配置文件的优化建议。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一, ansible 的工作机制

从图中可以看出ansible分为以下几个部份:

1> Control Node:控制机器 
2> Inventory:主机清单,配置管理主机列表 
3> Playbooks:剧本、任务编排。根据规则定义多个任务,模块组织结构清晰,由ansible自动执行。 
4> Modules(Core | Custom):模块,用于执行某个具体的任务 
5> connection plugin(连接插件):Ansible通过不同的协议连接到远程主机上,执行指定的命令。默认采用ssh协议连接远程主机。
二、Ansible执行流程

简单理解就是Ansible在运行时,首先读取ansible.cfg中的配置,根据规则获取Inventory中的管理主机列表,并行的在这些主机中执行配置的任务,最后等待执行返回的结果

三,ansible 安装

一台控住主机:192.168.26.145

二台管理主机:

  • 192.168.26.144
  • 192.168.26.143

本次安装基于CentOS7系统环境、Python2.7.5、root用户

3.1,yum 安装

1,yum -y install ansible

2,yum -y install epel-release.noarch 

3.2查看ansible 安装版本

1,ansible --version

ERROR! Unexpected Exception, this is probably a bug: (cryptography 0.8.2 (/usr/lib64/python2.7/site-packages), Requirement.parse(‘cryptography>=1.1‘))

最后一句Requirement.parse(‘cryptography>=1.1‘)),得知cryptography的版本过低,需要升级,安装cryptography需要通过pip安装,所以需要先安装pip

3.3 pip 安装

下载:wget https://files.pythonhosted.org/packages/69/81/52b68d0a4de760a2f1979b0931ba7889202f302072cc7a0d614211bc7579/pip-18.0.tar.gz
解压:tar -zxvf pip-18.0.tar.gz
进入目录:cd pip-18.0
安装:python setup.py install

3.4 wheel 安装

下载:wget https://files.pythonhosted.org/packages/2a/fb/aefe5d5dbc3f4fe1e815bcdb05cbaab19744d201bbc9b59cfa06ec7fc789/wheel-0.31.1.tar.gz
解压:tar -zxvf wheel-0.31.1.tar.gz
进入目录:cd wheel-0.31.1/
安装:python setup.py install

3.5 安装cryptoggraphy

下载:wget https://files.pythonhosted.org/packages/87/e6/915a482dbfef98bbdce6be1e31825f591fc67038d4ee09864c1d2c3db371/cryptography-2.3.1-cp27-cp27mu-manylinux1_x86_64.whl
安装:pip install cryptography-2.3.1-cp27-cp27mu-manylinux1_x86_64.whl

3.6 测试是否还有问题

四,配置管理主机

1,vim /etc/ansible/hosts

在hosts文件中添加管理主机的IP

五,配置控制主机的ssh秘钥 在控制主机中生成秘钥对

1,ssh-keygen -t rsa

注,如果在生成秘钥对的时候设置了密码,ansible每次执行命令的时候,都会提示输入密码,我们可以通过下面的命令记住密码

ssh-agent bsh

ssh-add  ~./.ssh/id_rsa

六,将公钥拷贝到管理主机中.ssh/authorized_keys文件中,实现免密码登录远程管理主机

 

1,[root@elk-node2 ~]# ssh-copy-id -i  ~/.ssh/id_rsa.pub root@192.168.26.144

2,[root@elk-node2 ~]# ssh-copy-id -i  ~/.ssh/id_rsa.pub root@192.168.26.143

注:ssh-copy-id 命令会自动id_rsa.pub文件的内容追加到远程主机root用户下.ssh/authorized_keys文件中

 

6.1,ansible 配置

1,vim /etc/ansible/ansible.cfg

禁用每次执行ansbile命令检查ssh key host 

host_key_checking = False

开启日志记录

log_path = /var/log/ansible.log

ansible连接加速配置

[accelerate]
#accelerate_port = 5099
accelerate_port = 10000 
#accelerate_timeout = 30
#accelerate_connect_timeout = 5.0

# If set to yes, accelerate_multi_key will allow multiple
# private keys to be uploaded to it, though each user must
# have access to the system via SSH to add a new key. The default
# is "no".
accelerate_multi_key = yes 不需要设置。。 此功能将在2.5版中删除。

deprecation_warnings = False来禁用弃用警告。

6.2,测试

 

 

要使用 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、付费专栏及课程。

余额充值