ansible的安装部署

Ansible的安装及部署 本章内容练习准备:准备三台虚拟机虚拟机一:能连接外网,配置好本地源和epel源虚拟机二、三:能和虚拟机一进行通信。 阅读详情


架构接上一篇

一.安装部署

[root@base2 ~]# ls
ansible-2.7.8-1.el7.noarch.rpm
ansible-tower-setup-bundle-3.4.2-1.el7.tar.gz
libtomcrypt-1.17-25.el7.x86_64.rpm
libtommath-0.42.0-5.el7.x86_64.rpm
python2-crypto-2.6.1-13.el7.x86_64.rpm
python2-jmespath-0.9.0-1.el7.noarch.rpm
python-httplib2-0.9.2-0.1.el7.noarch.rpm
python-keyczar-0.71c-2.el7.noarch.rpm
python-paramiko-2.1.1-0.9.el7.noarch.rpm
[root@base2 ~]# yum install -y *.rpm
[root@base2 ~]# cd /etc/ansible/
[root@base2 ansible]# ll
total 24
-rw-r--r-- 1 root root 20277 Feb 22 07:04 ansible.cfg   # 主配置文件
-rw-r--r-- 1 root root  1016 Feb 22 07:04 hosts         # 定义主机变量
drwxr-xr-x 2 root root     6 Feb 22 07:04 roles         # 存放角色的文件

#添加主机,我是分组存放主机的

[root@base2 ansible]# vim hosts   
[web]
base2

[db]
base3

#我们现在用密码来连接

[root@base2 ansible]# ansible base2 -m ping    # -m 调用模块,连接base2

在这里插入图片描述

[root@base2 ansible]# ansible base2 -m ping -k   # -k表示使用密码
SSH password: 

在这里插入图片描述[root@base2 ansible]# ansible base3 -m ping -k
SSH password:
在这里插入图片描述
#为了方便,我设置成为免密
在这里插入图片描述

[root@base2 ansible]# ssh-copy-id base2   # 建立免密

在这里插入图片描述

[root@base2 ansible]# ssh-copy-id base3  # 建立免密

在这里插入图片描述

[root@base2 ansible]# ansible base* -m ping   # 测试,不需要密码就可以成功

在这里插入图片描述

二.用ansible来部署远程服务

1.创建远程用户,并免密

[root@base2 ansible]# ansible all -m user -a "name=lala password=redhat"  # 给所有节点创建用户

在这里插入图片描述

[root@base3 ~]# id lala    # 在远程端查看,用户建立成功
uid=1000(lala) gid=1000(lala) groups=1000(lala)
[root@base3 ~]# cat /etc/shadow | tail -n 1

在这里插入图片描述[root@base2 ansible]# ssh-copy-id lala@base2 # 当我们给普通用户免密时,发现自己设置的密码不能使用在这里插入图片描述

[root@base2 ansible]# passwd lala   # 所以我们还需要手动修改密码

在这里插入图片描述

[root@base3 ~]# passwd lala     # 修改远程主机用户密码

在这里插入图片描述

[root@base2 ansible]# ssh-copy-id lala@base2  # 免密成功 
同样的cp给base3

在这里插入图片描述[root@base2 ansible]# ansible all -m ping
在这里插入图片描述

[root@base2 ansible]# vim /etc/sudoers   # 修改普通用户权限
92 lala    ALL=(ALL)       NOPASSWD: ALL
[root@base3 ~]# vim /etc/sudoers
92 lala    ALL=(ALL)       NOPASSWD: ALL

注:修改文件时,文件为只读,wq! 退出去即可

[root@base2 ansible]# ansible all -m ping -u lala -b     # -b表示切换为超户

在这里插入图片描述[root@base2 ansible]# ansible all -u lala -b -a "hostname"
在这里插入图片描述

2. yum模块的使用(为远程主机安装httpd)

[root@base2 ansible]# ansible base3 -u lala -b -m yum -a "name=httpd state=present"
name=httpd    # 以普通用户的身份登录远程,并用-b切换为超户

在远程主机base3上查看是否安装成功

[root@base3 ~]# rpm -qa httpd    # 远程查看,安装成功
httpd-2.4.6-45.el7.x86_64

在ansible服务端远程开启httpd服务

[root@base2 ansible]# ansible base3 -u lala -b -m service -a "name=httpd state=started"  # 远程开启httpd服务

查看远程主机是否开启成功

[root@base3 ~]# netstat -antlp | grep httpd   # 查看远程主机,开启成功

修改默认发布目录,方便测试

[root@base2 ansible]# vim index.html
www.westos.org
[root@base2 ansible]# ansible base3 -u lala -b -m copy -a "src=index.html dest=/var/www/html/index.html"    # 远程修改默认发布目录

在这里插入图片描述测试:

[root@foundation78 ~]# curl 172.25.78.13  # 测试
www.westos.org

3.安装数据库

[root@base2 ansible]# ansible base3  -m yum -a "name=mariadb-server state=present"  # 远程安装数据库
[root@base2 ansible]# ansible base3  -m service -a "name=mariadb state=started"   # 开启mysql
[root@base2 ansible]# ansible base3  -m mysql_user -a "name=haha password=westos priv=test.*:ALL state=present"   # 授权,执行失败,缺少模块

在这里插入图片描述

[root@base2 ansible]# ansible base3  -m yum  -a "name=MySQL-python state=present"  # 安装模块

[root@base2 ansible]# ansible base3  -m mysql_user -a "name=haha password=westos priv=test.*:ALL state=present"   # 重新授权

在这里插入图片描述在远程主机上登录数据库查看

[root@base3 ~]# mysql
MariaDB [(none)]> use mysql
MariaDB [mysql]> select Host,User,Password  from user where User="haha";

在这里插入图片描述

4.整合模块(以httpd服务为例)

**我们之前的所有模块都是自己一个一个自己加的,这样太麻烦了,所以我们现在用playbooks来整合模块**

[root@base2 ansible]# pwd
/etc/ansible
[root@base2 ansible]# mkdir playbooks
[root@base2 ansible]# cd playbooks/
[root@base2 playbooks]# mkdir httpd
[root@base2 playbooks]# cd httpd/
[root@base2 httpd]# vim httpd.yml   # 一定要注意缩进

---

# httpd部署
- hosts: base3
  remote_user: root
  tasks:
    - name: install httpd
  yum:
    name: httpd
    state: present
- name: config httpd
  copy: src=httpd.conf dest=/etc/httpd/conf/httpd.conf
  notify: restart httpd
- name: start httpd
  service: name=httpd state=started

handlers:
- name: restart httpd
service:
name: httpd
state: restarted
在这里插入图片描述

[root@base2 httpd]# ansible-playbook httpd.yml --syntax-check  # 检测语法
[root@base2 httpd]# ansible-playbook httpd.yml --list-host   # 查看主机

在这里插入图片描述

[root@base2 httpd]# ansible-playbook httpd.yml --list-task   # 查看任务列表

在这里插入图片描述[root@base2 httpd]# scp root@172.25.78.13:/etc/httpd/conf/httpd.conf /etc/ansible/playbooks/httpd/ # 运行文件

在这里插入图片描述[root@base2 httpd]# ansible base3 -m setup # 查看base3上的所有远程信息
检测文件是否被篡改,查到的一样,说明没有被篡改

[root@base2 httpd]# md5sum httpd.conf       
f5e7449c0f17bc856e86011cb5d152ba  httpd.conf
[root@base3 conf]# md5sum httpd.conf
f5e7449c0f17bc856e86011cb5d152ba  httpd.conf





[root@base2 httpd]# ansible-playbook httpd.yml --start-at-task="start httpd"   # 指定任务执行,仅仅执行了安装的任务

在这里插入图片描述

[root@base2 httpd]# vim httpd.conf    # 修改端口号
 42 Listen 8080
[root@base2 httpd]# md5sum httpd.conf   # 检测到文件被篡改
04e9239e7bd5d5b9b85864226d60eee5  httpd.conf
[root@base2 httpd]# ansible-playbook httpd.yml   # 执行文件

在这里插入图片描述在远程客户端查看,端口修改成功

[root@base3 conf]# netstat -antlp | grep httpd

在这里插入图片描述

四.jinja模块的使用

修改端口:
第一种方法:
[root@base2 httpd]# mv httpd.conf httpd.conf.j2 # j2=jinja2
[root@base2 httpd]# vim httpd.conf.j2
42 Listen {{ http_port }} # 调用端口变量
[root@base2 httpd]# vim httpd.yml
—
# httpd部署

- hosts: base3
  vars:
    http_port: 80      # 传入变量,这个变量会自动被识别
  remote_user: root
  tasks:
    - name: install httpd
      yum: name=httpd state=present
    - name: config httpd
      template: src=httpd.conf.j2 dest=/etc/httpd/conf/httpd.conf
      notify: restart httpd
    - name: start httpd
      service: name=httpd state=started
  handlers:
    - name: restart httpd
      service: name=httpd state=restarted

在这里插入图片描述

[root@base2 httpd]# ansible-playbook httpd.yml --syntax-check
[root@base2 httpd]# ansible-playbook httpd.yml   # 执行成功

在远程客户端查看

[root@base3 conf]# netstat -antlp | grep 80   # 查看端口,修改成功

在这里插入图片描述
第二种方法:

[root@base2 httpd]# vim /etc/ansible/hosts 
[web]
base2 http_port=8080

[db]
base3
[root@base2 httpd]# vim httpd.yml 
	# httpd部署
- hosts: all
  vars:
    http_port: 80
  remote_user: root
  tasks:
    - name: install httpd
      yum: name=httpd state=present
    - name: config httpd
      template: src=httpd.conf.j2 dest=/etc/httpd/conf/httpd.conf
      notify: restart httpd
    - name: start httpd
      service: name=httpd state=started
  handlers:
    - name: restart httpd
      service: name=httpd state=restarted

在这里插入图片描述

[root@base2 httpd]# netstat -antlp | grep 8080
[root@base2 httpd]# netstat -antlp | grep 80

在这里插入图片描述
如上效果显示,我们设置的8080端口没有生效,因为httpd.yml文件的优先级比hosts文件的优先级高,所以我们设定的端口并没有生效,我们可以换一种方法来实现

[root@base2 httpd]# pwd
/etc/ansible/playbooks/httpd
[root@base2 httpd]# vim /etc/ansible/hosts
[web]
base2 http_port=8080

[db]
base3 http_port=80

[root@base2 httpd]# vim httpd.yml 
---
# httpd部署
- hosts: all
  remote_user: root
  tasks:
    - name: install httpd
      yum: name=httpd state=present
    - name: config httpd
      template: src=httpd.conf.j2 dest=/etc/httpd/conf/httpd.conf
      notify: restart httpd
    - name: start httpd
      service: name=httpd state=started
  handlers:
    - name: restart httpd
      service: name=httpd state=restarted

在这里插入图片描述

[root@base2 httpd]# ansible-playbook httpd.yml --syntax-check
[root@base2 httpd]# ansible-playbook httpd.yml
[root@base2 httpd]# netstat -antlp | grep 8080  # 端口修改成功

在这里插入图片描述
第三种方法(识别ip来修改端口):

[root@base2 httpd]# vim httpd.conf.j2 
42 Listen {{ http_host }}:{{ http_port}}  #  调用ip和端口变量
[root@base2 httpd]# vim /etc/ansible/hosts 
[web]
base2 http_host=172.25.78.12

[db]
base3 http_host=172.25.78.13

[webserver:children]
web
db

[webserver:vars]
http_port=80

在这里插入图片描述

[root@base2 httpd]# vim httpd.yml 
---
# httpd部署
- hosts: all
  vars:
    http_port: 80
  remote_user: root
  tasks:
    - name: install httpd
      yum: name=httpd state=present
    - name: config httpd   
      template: src=httpd.conf.j2 dest=/etc/httpd/conf/httpd.conf
      notify: restart httpd
    - name: start httpd
      service: name=httpd state=started
  handlers:
    - name: restart httpd
      service: name=httpd state=restarted

在这里插入图片描述

[root@base2 httpd]# ansible-playbook httpd.yml --syntax-check
[root@base2 httpd]# ansible-playbook httpd.yml

查看两台主机端口是否都修改成功

[root@base2 httpd]# netstat -antlp | grep httpd

在这里插入图片描述[root@base3 ~]# netstat -antlp | grep httpd
在这里插入图片描述

ansible安装部署步骤 目录Ansible概述1、关闭防火墙2、安装相关软件3、修改主机清单4、创建密钥对,进行远程连接5、将公钥上传到被监控端6、设置ssh免交互登录 Ansible概述 Ansible可以同时管理Redhat系的Linux,Debian系的Linux,以及Windows主机。管理节点只在执行脚本时与远程主机连接,没有特别的同步机制,所以断电等异常一般不会影响ansbile。 ansible是新出现的自动化运维工具,基于Python开发,集合了众多运维工具(puppet、cfengine、chef、fun 阅读详情

相关推荐

【云计算】ansible安装部署openstack平台(很全!亲测有效)

Ansible服务的节点规划,见表2。表2 规划节点。

qq_47493625的博客 5768

ansible的安装和部署

一.概念解释 二.安装ansible 1.安装ansible [root@server1 ~]# ls ansible-2.7.8-1.el7.noarch.rpm ##ansible安装包,下面的是安装需要解决的依赖性 libtomcrypt-1.17-25.el7.x86_64.rpm libtommath-0.42.0-5.el7.x86_64.rpm python2-crypto...

清风 769

离线安装部署 Ansible:完整指南

本文详细介绍了在离线环境中手动安装和部署Ansible的完整流程。针对CentOS/RHEL系统,首先在有网机器上下载Ansible及其依赖的RPM包并打包,然后通过本地安装方式在目标服务器上完成部署。文章包含环境准备、依赖包下载、离线安装步骤、配置方法及功能测试的全过程,提供了一套安全可控的企业级自动化运维解决方案,适用于无法连接外网的生产环境。通过该方法,即使在没有互联网访问的情况下,也能实现Ansible的稳定运行和批量服务器管理。

m0_46879864的博客 1514

CentOS7.5 下 Ansible 2.7.0-1.el7 架构的安装,配置,管理

CentOS7.5 下 Ansible 2.7.0-1.el7 架构的安装,配置,管理 环境:CentOS7.5 (CentOS Linux release 7.5.1804 (Core)) YUM方式安装Ansible 2.7.0-1.el7 epel版本: epel-release-7-11 yum install epel-release ansible版本2.7.0-1.el7 ...

weixin_34056162的博客 893

txt经纬度批量转面要素(附自定义ArcGIS工具箱方法)

当涉及大量txt坐标文件需要转换成面要素的时候,逐步操作工作量较大。本文由需求出发,以ArcGIS10.2为例,采用python脚本自定义ArcGIS工具,实现批量操作的目的。

m0_59216200的博客 1818

ENU坐标系实战:5分钟搞定无人机导航中的站心坐标转换

本文针对无人机导航中GPS坐标与视觉感知不匹配的定位漂移问题,提供了基于ENU坐标系的实战解决方案。通过Python代码演示了如何快速、精准地实现地心地固坐标与站心坐标之间的转换,并详细解释了转换原理、精度对比及工程优化技巧,帮助开发者从根本上解决局部相对定位不准的难题。

mqtt6iot的博客 552

Ansible在远程主机上管理Docker容器和Kubernetes集群

Ansible在远程主机上管理Docker容器和Kubernetes集群

qq_45745375的博客 603

SpringBoot Redis入门(一)——redis、Lettuce、Redisson使用

Lettuce是SpringBoot自带的Redis客户端,性能比Redis要好, 是线程安全的,支持同步编程,异步编程,响应式编程,自动重新连接,主从模式,集群模块,哨兵模式Redisson 是一个在 Redis 的功能基础上实现的 Java 驻内存数据网格客户端。实现了分布式和可扩展的 Java 数据结构,提供很多分布式相关操作服务,例如分布式锁,分布式集合,可通过 Redis 支持延迟队列。

朗朗的博客 3833

ansible的安装

Linux ansible的安装

Kr__z的博客 157

解锁全志T113-i隐藏技能:用RISC-V核跑实时系统比STM32还稳?

本文深入探讨了全志T113-i SoC的异构架构潜力,重点解析如何利用其内置的玄铁C906 RISC-V核心独立运行实时系统。通过对比传统MCU与Linux方案,文章提供了从RISC-V核心启动、FreeRTOS移植到与Linux主核进行高效异构通信的完整实战指南,为工控等需要兼顾丰富应用与硬实时控制的场景提供了高集成度的单芯片解决方案。

ansible6ops的博客 494

T100服务端接口实战:从注册到日志排查的全链路开发指南

本文提供了一份T100服务端接口开发的全链路实战指南。从程序注册与框架签出开始,详细讲解了接口的数据结构设计、核心业务逻辑编写,到最终的部署上线与调用验证。文章重点分享了如何利用日志文件高效定位和排查接口问题,帮助开发者快速掌握T100接口开发的关键步骤与实用技巧。

weixin_28831399的博客 300

Ansible远程部署

Ansible是一个基于Python开发的配置管理和应用部署工具,现在也在自动化管理领域大放异彩。它融合了众多老牌运维工具的优点,Pubbet和Saltstack能实现的功能,Ansible基本上都可以实现。Ansible能批量配置、部署、管理上千台主机。比如以前需要切换到每个主机上执行的一或多个操作,使用Ansible只需在固定的一台Ansible控制节点上去完成所有主机的操作。

2301_76288258的博客 1610

自动驾驶仿真(六)—— SIL软件在环仿真测试

自动驾驶仿真六—— SIL软件在环仿真测试1. 在环仿真测试2. SIL软件在环仿真测试2.1 模型配置参数2.2 S function生成实现2.3 结果对比3. 参考学习的书目教材 博主前面的博文已经简要介绍了Carsim、Prescan 与 Simulink 在 “V”型开发流程的一些应用,现今成熟的汽车控制系统软件都是以(Model Based Design,MBD)来开发,它以图形化的方式表达复杂的逻辑、代码可读性、可移植性、开发调试便利程度都大大增强,同时利用成熟的代码生成工具链,也避免了手工代

zhudj08的博客 8650

centos 下安装部署ansible

文件 /etc/ansible/hosts 维护着Ansible中服务器的清单默认调用的是 /etc/ansible/hosts 文件配置自定义hosts文件#shiye[iplist]

2053

AutoSAR系列讲解(实践篇)12.1-Diagnostics简介

主要概括性的讲解了诊断协议UDS和AutoSAR的诊断架构

雪云飞星的博客 1万+

CLAHE 算法学习 matlab

概念可参考: CLAHE (Contrast Limited Adaptive Histogram Equalization)算法学习CLAHE具体实现主要包括6个步骤。1):分块。将输入图像划分为大小相等的不重叠子块,每个子块含有的像素数为M。参考示例为8×8块。 2):计算子块直方图。 3):计算剪切阈值clipLimit 4):像素点重分配。对每个子块,使用步骤三中多余的像素重新分配。 5):直方图均衡。 6):像素点灰度值重构。(源码中采用了双线性插值) http://www.realtimer

baidu_34971492的博客 4253

Ansible-AWX安装部署

它在 Ansible 自动化引擎的基础上,提供了可视化的操作平台,支持通过图形化界面管理 Ansible Playbooks、 inventories(主机清单)、用户权限及任务执行等。其核心功能包括任务调度、角色管理、日志审计、多租户隔离等,能简化大规模自动化运维场景的操作流程,比如批量部署应用、配置管理、跨节点任务协调等,同时增强了 Ansible 在团队协作和企业级环境中的可管理性与安全性,是提升运维自动化效率的重要工具。准备一台4核8G的虚拟机关闭防火墙和seLinux。

2302_79605009的博客 4042

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

Ansible安装部署

Ansible 是一个无代理自动化工具,您可以在单个主机(称为控制节点)上安装。从控制节点,Ansible 可以通过 SSH、Powershell 远程控制和许多其他传输方式远程管理整个机器和设备群(称为受管节点),所有这些都来自一个简单的命令行界面,无需数据库或守护进程。

2401_86237064的博客 1049

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

Ansible的安装部署

1.7Ansible的安装部署 了解完Ansible是什么、通信原理及发展史、Ansible发展历程及其应用场景后,接下来为大家介绍Ansible的安装部署 Ansible的安装部署非常简单,其仅依赖于Python和SSH,而系统默认均已安装 除Windows外,RedHat、Debian、CentOS、OSX均可作为管理节点部署Ansible Ansible[安塞波]被RedHat红帽官方收购后,其安装源被收录在EPEL中 如已安装EPEL可直接Y

说客不言 1697

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

ansible的安装及部署

一、ansible的介绍 1、ansible概述 ansible是一款类Unix系统开发的自由开源的配置和自动化工具,本质是一种插件;其由Python语 言开发而来,类似于saltstack和Puppet;ansible只需要在一台普通的服务器上运行即可,不需要 在客户端服务器上安装客户端,因为ansible是基于SSH进行远程管理,而Linux服务器大都离不开 SSH,因此ansible不需要为配置工作添加额外的支持,从而很简单地实现一对多的工作模式 2、ansible工作原理 ansibl

m0_59749940的博客 2463

Ansible的安装和部署

一、环境部署 二、安装 --------------------

m0_49265034的博客 7508

Ansible的介绍、安装与部署

Ansible 是一种强大的自动化工具,用于自动化配置管理、应用部署、任务执行等操作。它采用简单的 YAML 格式来描述自动化任务,并通过 SSH 或其他传输方式实现与远程主机的通信,无需在远程主机上安装额外的客户端。

该学习了a的博客 1801

ansible安装部署

一、ansible介绍 1、简介 ansible是新出现的自动化运维工具,基于Python开发,集合了众多运维工具(puppet、cfengine、chef、func、fabric)的优点,实现了批量系统配置、批量程序部署、批量运行命令等功能。 ansible是基于模块工作的,本身没有批量部署的能力。真正具有批量部署的是ansible所运行的模块,ansible只是提供一种框架。主要包

kane_canpower的博客 944
上一篇: 如何快速构建单机版测试 codis 集群
下一篇: ansible实现对目标主机进行磁盘分区,创建逻辑卷、永久挂载
小杨118709
博客等级 码龄8年 141粉丝 138原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值