Ansible课堂环境+部署_Usmile小七的博客-程序员宝宝

技术标签: 运维  Ansible  

环境使用

配置远程管理

  1. windows 仅主机(vmnet1)网卡增加IP:172.25.254.1/255.255.255.0
    在这里插入图片描述服务器IP:172.25.254.250
    Xshell连接 ssh [email protected]
    密码:redhat
    在这里插入图片描述

开始练习环境

  1. 设置课程:
    清除课程:[[email protected] ~]$ rht-clearcourse 0
    设置课程:[[email protected] ~]$ rht-setcourse rh294

  2. 启用环境:
    启用classroom(仅一次):[[email protected] ~]$ rht-vmctl start classroom
    启用其他服务器:[[email protected] ~]$ rht-vmctl start all
    查看状态:[[email protected] ~]$ rht-vmctl status all
    bastion RUNNING
    workstation RUNNING
    servera RUNNING
    serverb RUNNING
    serverc RUNNING
    serverd RUNNING

    重置环境:[[email protected] ~]$ rht-vmctl reset servera
    [[email protected] ~]$ rht-vmctl fullreset servera

安装Ansible

yum安装

sudo yum install ansible

部署ansible

清单文件:定义机和组

练习:
创建静态inventory文件/home/student/ansible/inventory,要求如下:
servera属于dev主机组
serverb属于test和balancers主机组
serverc和serverd属于prod主机组
prod主机组属于webservers主机组
创建ansible配置文件/home/student/ansible/ansible.cfg,要求如下:
使用/home/student/ansible/inventory清单文件
角色存放在/home/student/ansible/roles/ 目录

[dev]
servera

[test]
serverb

[balancers]
serverb

[prod]
serverc
serverd

[webservers:children]
prod

在这里插入图片描述

配置文件

安装ansible及配置环境:
配置文件优先级:
ANSIBLE_CONFIG–>./ansible.cfg–>~/.ansible.cfg–>/etc/ansible/ansible.cfg

  1. 将ansible配置文件复制到家目录的ansible文件夹下:
    cp /etc/ansible/ansible.cfg ~/ansible/ansible.cfg
...
 14 inventory      = /home/student/ansible/inventory
 ...
 68 roles_path    = /home/student/ansible/roles
 ...
 71 host_key_checking = False
 ...
340 [privilege_escalation]
341 become=True
342 become_method=sudo
343 become_user=root
344 become_ask_pass=False
...

创建roles路径
[[email protected] ansible]$ mkdir /home/student/ansible/roles
注意:练习环境需要手动修改servea-serverd sudo配置文件

[[email protected] ~]$ ssh [email protected]
[[email protected] ~]# visudo 
106 ## Allows people in group wheel to run all commands
107 %wheel  ALL=(ALL)       ALL
108 
109 ## Same thing without a password
110 %wheel  ALL=(ALL)       NOPASSWD: ALL

清单文件最后设置变量。

[all:vars]
ansible_user=root
ansible_password=redhat

验证:验证清单文件
[[email protected] ansible]$ ansible-inventory --graph
[[email protected] ansible]$ ansible all -m ping

运行临时命令

语法: ansible 主机或组 -m 模块名 -a ‘模块参数’ -i 清单文件
**模块:**列出所有模块 ansible-doc -l | wc -l
模块帮助:
参数帮助:ansible-doc -s modname
示例帮助:ansible-doc modname

  1. 命令执行模块
    (1)command模块:默认模块,该模块通过-a跟上要执行的命令可以直接执行,不过命令里如果有带有如下字符部分则执行不成功 “ “<”, “>”, “|”, “&” ;
    [[email protected] ansible]$ ansible dev -a 'df -h'
    (2)shell模块:用法基本和command一样,不过其是通过/bin/sh进行执行,所以shell 模块可以执行任何命令,就像在本机执行一样;
    [[email protected] ansible]$ ansible dev -m shell -a "df -h | awk '/\/$/'"
    (3)raw模块:用法和shell模块一样,也可以执行任意命令,就像在本机执行一样;和command、shell模块不同的是其没有chdir、creates、removes参数
    `[[email protected] ansible]$ ansible dev -a ‘chdir=/tmp pwd’

creates: 存在不执行
[[email protected] ansible$ ansible dev -a 'creates=/etc/hosts df -h'
removes:存在则执行
[[email protected] ansible]$ ansible dev -a 'removes=/etc/hosts df -h'
(4)script模块:将管理端的shell 在被管理主机上执行,其原理是先将shell 复制到远程主机,再在远程主机上执行,原理类似于raw模块。
[[email protected] ansible]$ ansible dev -m script -a 'test.sh'

创建一个 shell 脚本名为 adhoc.sh 用以运行 ad-hoc 命令 。为每个受控节点配罝 yum仓库。要求如下:
仓库1 :
Name: RH294_Base
Description: RH294 base software
Base url: http://content.example.com/rhel8.0/x86_64/dvd/BaseOS
需要验证钦件包 GPG 签名
GPG key 在: /etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release
启用此软件仓库

仓库 2:
Name: RH294_Stream
Description : RH294 stream software
Base url: http://content.example.com/rhel8.0/x86_64/dvd/AppStream
需要验证软件包 GPG 签名
GPG key 在: /etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release
启用此软件仓库

解析:那个模块实现配置yum 仓库。
	[[email protected] ansible]$ ansible-doc -l | grep yum
	yum                                                    Manages packages with the `yum' package manager                               
	yum_repository                                         Add or remove YUM repositories 
	
	查看模块帮助:[[email protected] ansible]$ ansible-doc yum_repository
	
	命令行配置一个仓库。
	[[email protected] ansible]$ ansible dev -m yum_repository -a 'name=RH294_Base description="RH294 base software" \
	baseurl=http://content.example.com/rhel8.0/x86_64/dvd/BaseOS \
	gpgcheck=yes gpgkey=/etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release \
	enabled=yes'
	
	编写脚本:
	[[email protected] ansible]$ cat adhoc.sh 
	#!/bin/bash
	ansible all -m yum_repository -a 'name=RH294_Base description="RH294 base software" \
		baseurl=http://content.example.com/rhel8.0/x86_64/dvd/BaseOS \
		gpgcheck=yes gpgkey=/etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release \
		enabled=yes'

	ansible all -m yum_repository -a 'name=RH294_Stream description="RH294 stream software" \
		baseurl=http://content.example.com/rhel8.0/x86_64/dvd/AppStream \
		gpgcheck=yes gpgkey=/etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release \
		enabled=yes'
		
	增加执行权限,运行脚本验证:
	[[email protected] ansible]$ chmod +x adhoc.sh
	[[email protected] ansible]$ ./adhoc.sh

2、net tools 模块
	nmcli:
	# ansible web -m nmcli -a 'conn_name=ens37 ifname=ens37 type=ethernet ip4=192.168.150.115/24 gw4=192.168.150.2 dns4=8.8.8.8 state=present'

	get_url: 下载文件 ftp、http、https
		下载sl软件。
		https://rpmfind.net/linux/epel/8/Everything/x86_64/Packages/s/sl-5.02-1.el8.x86_64.rpm
		
		# ansible web -m get_url -a 'url=https://rpmfind.net/linux/epel/8/Everything/x86_64/Packages/s/sl-5.02-1.el8.x86_64.rpm dest=/root/ansible/'
	
	uri:与web服务器交互
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_43239001/article/details/121457747

智能推荐

大华平台linux密码,大华DSS平台低权限账户越权直接修改system密码_少读红楼的博客-程序员宝宝

大华DSS平台低权限账户越权直接修改system密码前提:拥有config配置用户名密码被测试DSS版本信息:V3.11.003.R.20150929.374164前提:拥有config配置用户名密码一.取得所有用户名1.进入config管理界面地址:http://[IP]/config/user_toLoginPage.action默认用户名admin密码1234562.配置自动SQL备份FTP...

http连接池https忽略证书认证_华布斯的博客-程序员宝宝

private static PoolingHttpClientConnectionManager manager; // 连接池管理类 private static ScheduledExecutorService monitorExecutor = Executors.newScheduledThreadPool(1);; private static SSLContext...

(模板题)How Many Tables_极客字节的博客-程序员宝宝

HDU-How Many Tables-1213问题描述:给n个人分配桌子,要求在一个桌子上只能有认识的人,然后给出了m中关系,求需要多少张桌子;并查集:假设刚开始需要cnt=n张桌子,没合并一次,cnt减一,最后cnt的值就是答案;初始化+查找+合并;#include&amp;lt;iostream&amp;gt;using namespace std;const int maxn=1...

利用Python学习数据挖掘【0】_夜空骑士的博客-程序员宝宝

相信看到这篇文章的你一定是对数据分析,数据挖掘有兴趣,或者想从事和方面。本文不再累述python对数据分析的重要,数据分析这门的由来之类的。在这里,我单刀直入,已我学习数据挖掘3年来的经历告诉大家怎么去学,以让大家少走弯路。纯个人见解,如有不对,还请各位留言指教。话不多说,直接放图。一  学好工具python语言推荐看廖雪峰的python3教程。数据分析python基础...

linux下内联函数实现浅析_caoyan_12727的博客-程序员宝宝

首先我们来看看内联函数的相关解释:1.引入目的:为了解决程序中函数调用的效率问题2.  优点:节省了函数调用时间,也就是说没有call指令(也就没有相关参数的压栈(push),跳转(jmp),返回(ret), 参数出栈(add $0x10,%esp)等等一系类的操作,可谓是节省了不少功夫),以空间换时间.3. 缺点:在调用出的代码量会增加很多。在编译器没有将相关函数处理成内联函数时(为

MacBook Air发热严重,如何自检_ITACHI.鼬的博客-程序员宝宝_mac发热

温度对于电脑来说很重要,温度高了会导致电脑运行缓慢,死机等情况。特别是在炎热的夏天,你的电脑的温度正常么,是否能够正常运行呢?如果你的MacBook Air发热比较严重的话可以来看下这篇文章,macz小编为您提供了5个技巧和窍门帮您进行修复。为什么我的MacBook Air会这么热?很多问题都可能导致MacBook Air发热,从堆积的灰尘到大量浏览器选项卡。这些是每台电脑都需要应对的问题,但是MacBook似乎比大多数机器要严重很多。从2019年开始,MacBook Air似乎特别容易出现过热问题,

随便推点

大数据平台核心技术-实验记录_月色很柔的博客-程序员宝宝_大数据平台核心技术

大数据核心平台技术-试验记录一、前言二、实验内容实验一 :Hadoop集群搭建三、实验过程记录2.1安装准备2.2 Hadoop集群搭建安装文件上传工具JDK安装Hadoop安装:Hadoop集群配置配置Hadoop集群主节点将集群主节点的配置文件分发到其他子节点一、前言学校:许昌学院学院:信息工程学院实验环境:操作系统:Linux (CentOS 6.7) JDK版本:1.8 (...

Jackson-databind 反序列化漏洞(CVE-2020-36179 ~ CVE-2020-36189)_ℳ₯㎕ddzོꦿ࿐的博客-程序员宝宝_jackson反序列化漏洞

2021年1月7日,jackson-databind官方发布安全通告,披露jackson-databind &lt; 2.9.10.8存在多个反序列化远程代码执行漏洞(CVE-2020-36179 ~ CVE-2020-36189),利用该漏洞,攻击者可远程执行代码,控制服务器。2020年12月17日,jackson-databind官方发布安全通告,披露jackson-databind &lt; 2.9.10.8存在反序列化远程代码执行漏洞(CVE-2020-35490/CVE-2020-35491).

暑假很忙_iteye_11687的博客-程序员宝宝

我是非计算机专业的计算机爱好者,我为自己的2009年暑假安排了很多事情:1.进一步提高C语言。2.学习Java。3.学习Jsp。4.准备程序员考试。5。学习C++。6.学习HTML。7.学习数据结构。8.学习SQL Server。9。学习Java Scprit。10.学习Photoshop。我肯定很充实,因为Ihave a dream !...

<java API源码初体验>4---collection集合之HashSet原理分析_Fuego801的博客-程序员宝宝

java的HashSet是由HashMap的key组成的,用的增删改查的方法均基于HashMap的key。根据HashMap保证了key的唯一性。 public boolean add(E e) { return map.put(e, PRESENT)==null; }它的add()方法,用的就是HashMap里面的put()方法。 若map中已存在e,则返回false;若

C#(Winform) 当前线程不在单线程单元中,因此无法实例化 ActiveX 控件_EricBBB的博客-程序员宝宝

解决方案:1、在主线程中实例化此ActiveX控件2、将创建此Active控件的线程设定为单线程。      Thread.ApartmentState 获取或设置此线程的单元状态。            newThread= new Thread(MainFormMessageThread);            newThread.SetApartmentState(S...

jquery 简单的进度条实现代码_chinajobs的博客-程序员宝宝_jquery进度条代码

效果图需要用到的图片:背景图片:进度显示图片:网页结构:复制代码 代码如下: css代码: 代码 复制代码 代码如下:#center{ margin:50px auto; width:400px; } #loading{ width:397px; height:49px; back

推荐文章

热门文章

相关标签