在RHEL 9 上部署Ansible

目录

在控制主机上安装Ansible(两种方法)

准备一台master  两台受控主机,只有master安装ansible即可(ansible依靠ssh)

根据优先级选择执行ansible配置文件

配置ansible的配置文件 ansible.cfg (优先级别)

管理配置文件中的设置(ini)

配置信息(ini)

定义主机清单文件

ansible-doc单条命令实施任务

主机联通性测试

command模块参数

shell模块

script模块

raw模块

file模块

示例:

创建文件

示例:

创建文件

删除

更改属主属组

更改权限


在控制主机上安装Ansible(两种方法)

依靠网络源 -- 适用于所有版本的RHEL

(1)配置rocky9的网络源 mirrors.163.com

[root@localhost ~]# cat /etc/yum.repos.d/rocky.repo

[App] name=rocky-app

baseurl=Index of /rocky/9/AppStream/x86_64/os/

gpgcheck=0

[BaseInet]

name=rocky-base

baseurl=Index of /rocky/9/BaseOS/x86_64/os/

gpgcheck=0

[root@localhost ~]# cat /etc/yum.repos.d/base.repo

[base]

name=base

baseurl=file:///mnt/BaseOS

gpgcheck=0

[App] name=App

baseurl=file:///mnt/AppStream

gpgcheck=0

(2)安装自动化工具:

yum install ansible-core -y

(3)查看是否安装成功

#ansible --version

基于python3.8版本安装部署

使用本地源

在RHEL9的本地源中是自带Ansible的安装包,可以直接依靠本地源来安装

检查版本号查看是否安装成功

准备一台master  两台受控主机,只有master安装ansible即可(ansible依靠ssh)

根据优先级选择执行ansible配置文件

执行ansible命令根据所在目录匹配相关ansible配置文件,实践中一般使用ansible命令的目录中创建ansible.cfg文件,此目录中也将包含任何你的ansible项目使用的文件,有清单或者主机清单。

配置ansible的配置文件 ansible.cfg (优先级别)

1)ANSIBLE_CONFIG环境变量匹配配置文件ansible.cfg

2)./ansible.cfg

3)~/.ansible.cfg

4)/etc/ansible/ansible.cfg

管理配置文件中的设置(ini)

配置文件由几部分组成,每部分含有以键值对形式定义的设置。部分的标题一方括号括起。重点需要了解以下两部分:

[defaults]
inventory = ./inventory                          #主机列表配置文件
library = /usr/share/my_modules                #库文件存放目录
forks = 5             #默认并发数5 (同时可以处理5个命令--同时有20个节点主机5个主机执行在5个执行)
sudo_user = root     #默认的sudo用户 root
ask_sudo_pass = Ture 
ask_pass = false        #每次执行ansible命令是否询问ssh密码
remout_port = 22        
host_key_checking = False  #检查对应服务器的host_key,建议取消注释
log_path = /var/log/ansible.log   #ansible日志文件
module_name = command     #默认模块,可以改为shell
remote_user = user        #要在受管主机上登录的用户名称,没有指定则是当前用户(受管、管控、托管主机的用户名)
remote_tmp = ~/.ansible/tmp ;临时的py命令文件存放在远程主机目录
​
[privilege_escalation]     ;特权升级
become = true             #连接后是否在受管主机上切换用户,默认会切换到root下
become_method = sudo     #如何切换用户
become_user = root         #受管主机切换到的用户
become_ask_pass = false     #是否为become_method提示输入密码,默认为false

1.每台主机都要有student用户
2.student用户可以有root的操作权限并且不需要密码
\#visudo
student   ALL=(ALL)  NOPASSWD:ALL
3.在server下生成秘钥ssh-keygen  -f ~/.ssh/id_rsa -P '' -q

  • -f ~/.ssh/id_rsa 指定了生成的密钥文件的路径和名称(在这里是~/.ssh/id_rsa)。
  • -P '' 设置了密钥的密码,这里是空字符串,表示没有密码。
  • -q 参数表示在生成密钥的过程中不显示任何警告或提示信息。

生成密钥也可指定输出的密钥算法

ssh-keygen -t rsa 

分别发送公钥认证文件
4、下发密钥到被管理节点 
[root@localhost ansible]# for name in node{1..2} ;do ssh-copy-id root@$name;done 
5、验证一下SSH无密码配置是否成功 
[root@localhost ansible]# for name in node{1..2};do ssh $name hostname;done

配置信息(ini)

[defaults]

inventory = ./inventory #主机列表配置文件 host_key_checking = False #检查对应服务器的host_key,建议取消注释

forks = 5 #默认并发数5 (同时可以处理5个命令--同时有20个节点主机5个主机执行在5个执行)

ask_pass = false #每次执行ansible命令是否询问ssh密码

定义主机清单文件

#vim ./inventory

[web]

node1

[dns]

node2

ansible-doc单条命令实施任务

ansible 主机名|主机组名 -m 模块 -a '模块相关参数'

ansible web -m ping

ansible-doc 查找关于本地系统上安装的模块信息==显示模块帮助(ansible里man命令)

-l,--lsit 查看控制节点上可用的模块列表以及其功能的概要;列出可用模块
-s,--snippet 列岀某个模块支持的动作 显示模块的playbook
ansible-doc [module name] 查看指定模块的概要、选项、详细信息、以及基本用法
模块文档文档网站:Ansible Documentation

主机联通性测试

      绿色:执行成功并且不需要做出任何改变
      黄色:执行成功并且对目标主机做出变更
      红色:执行失败
      蓝色:显示详细过程
      紫色:显示警告

command模块参数

名称必选备注
chdirno运行command命令前先cd到这个目录
createsno如果这个参数对应的文件存在,就不运行command
free_formyes需要执行的脚本(没有真正的参数为free_form)
executableno改变用来执行命令的shell,应该是可执行文件的绝对路径。
removesno如果这个参数对应的文件不存在,就不运行command,与creates参数的作用相反
stdin(2.4后新增)no将命令的stdin设置为指定的值

free_form参数 :必须参数,指定需要远程执行的命令。需要说明一点,free_form 参数与其他参数(如果想要使用一个参数,那么则需要为这个参数赋值,也就是name=value模式)并不相同。比如,当我们想要在远程主机上执行 ls 命令时,我们并不需要写成”free_form=ls” ,这样写反而是错误的,因为并没有任何参数的名字是 free_form,当我们想要在远程主机中执行 ls 命令时,直接写成 ls 即可。因为 command 模块的作用是执行命令,所以,任何一个可以在远程主机上执行的命令都可以被称为 free_form

shell模块

让远程主机在shell进程下执行命令,从而支持shell的特性,如管道等。与command模块几乎相同,但在执行命令的时候使用的是/bin/sh。

名称必选备注
chdirno运行command命令前先cd到这个目录
createsno如果这个参数对应的文件存在,就不运行command
executableno改变用来执行命令的shell,应该是可执行文件的绝对路径。
free_formyes需要执行的脚本(没有真正的参数为free_form)
removesno如果这个参数对应的文件不存在,就不运行command,与creates参数的作用相反
stdin(2.4后新增)no将命令的stdin设置为指定的值

切换目录,执行命令并保持输出

[root@centos7 ~]# ansible test -m shell -a "sh test.sh > result chdir=/root"
 172.20.21.120 | SUCCESS | rc=0 >>

[root@centos7 ~]# ansible test -m shell -a "cat result chdir=/root"
 172.20.21.120 | SUCCESS | rc=0 >>

script模块

名称必选备注
chdir(2.4后新增)no运行command命令前先cd到这个目录
createsno如果这个参数对应的文件存在,就不运行command
decryptno此选项控制使用保管库的源文件的自动解密
free_formyes需要执行脚本的本地文件路径(没有真正的参数为free_form)
removesno如果这个参数对应的文件不存在,就不运行command,与creates参数的作用相反
在远程主机上执行脚本

[root@centos7 ~]# ansible test -m script -a "test.sh chdir=/tmp"
 172.20.21.120 | SUCCESS => {
   "changed": true, 
   "rc": 0, 
   "stderr": "Shared connection to 172.20.21.120 closed.\r\n", 
   "stdout": "/tmp\r\n", 
   "stdout_lines": [
     "/tmp"
   ]
 }

raw模块

  • raw模块主要用于执行一些低级的,脏的SSH命令,而不是通过command模块。

  • raw模块只适用于下列两种场景,第一种情况是在较老的(Python 2.4和之前的版本)主机上,另一种情况是对任何没有安装Python的设备(如路由器)。 在任何其他情况下,使用shell或command模块更为合适。

  • 就像script模块一样,raw模块不需要远程系统上的python

名称必选备注
executableno改变用来执行命令的shell,应该是可执行文件的绝对路径。
free_formyes需要执行的脚本(没有真正的参数为free_form)
[root@centos7 ~]# ansible test -m raw -a "pwd"
 172.20.21.120 | SUCCESS | rc=0 >>
 /root
 Shared connection to 172.20.21.120 closed.

file模块

file模块可以帮助我们完成一些对文件的基本操作,比如,创建文件或目录、删除文件或目录、修改文件权限等

  • path参数必须参数,用于指定要操作的文件或目录,在之前版本的ansible中,使用dest参数或者name参数指定要操作的文件或目录,为了兼容之前的版本,使用dest或name也可以。

  • state参数 :Path=“路径” state= touch|file|directory|link|hard|absent

  • src参数 :当state设置为link或者hard时,表示我们想要创建一个软链或者硬链,所以,我们必须指明软链或硬链链接的哪个文件,通过src参数即可指定链接源。

  • force参数 : 当state=link的时候,可配合此参数强制创建链接文件,当force=yes时,表示强制创建链接文件,不过强制创建链接文件分为两种情况,情况一:当你要创建的链接文件指向的源文件并不存在时,使用此参数,可以先强制创建出链接文件。情况二:当你要创建链接文件的目录中已经存在与链接文件同名的文件时,将force设置为yes,回将同名文件覆盖为链接文件,相当于删除同名文件,创建链接文件。情况三:当你要创建链接文件的目录中已经存在与链接文件同名的文件,并且链接文件指向的源文件也不存在,这时会强制替换同名文件为链接文件。

  • owner参数 :用于指定被操作文件的属主,属主对应的用户必须在远程主机中存在,否则会报错。

  • group参数 :用于指定被操作文件的属组,属组对应的组必须在远程主机中存在,否则会报错。

  • mode参数:用于指定被操作文件的权限,比如,如果想要将文件权限设置为"rw-r-x---",则可以使用mode=650进行设置,或者使用mode=0650,效果也是相同的,如果你想要设置特殊权限,比如为二进制文件设置suid,则可以使用mode=4700,很方便吧。

  • recurse参数:当要操作的文件为目录,将recurse设置为yes,可以递归的修改目录中文件的属性。 -R

  • setype: httpd_content_t

示例:

创建文件

1.在node1主机上创建一个名为testfile的文件,如果testfile文件已经存在,则会更新文件的时间戳,与touch命令的作用相同。

ansible node1 -m file -a 'path=/testfile state=touch'
ansible node1 -m file -a 'path=/testfile state=directory'
ansible node1 -m file -a 'path=/testfile state=absent'
ansible node1 -m file -a 'path=/testfile state=touch owner=redhat group=redhat mode=622'

示例:

创建文件

1.在test70主机上创建一个名为testfile的文件,如果testfile文件已经存在,则会更新文件的时间戳,与touch命令的作用相同。

ansible test70 -m file -a "path=/testdir/testfile state=touch"

2.在test70主机上创建一个名为testdir的目录,如果testdir目录已经存在,则不进行任何操作。

ansible test70 -m file -a "path=/testdir/testdir state=directory"

创建链接文件 src

3.在test70上为testfile文件创建软链接文件,软链接名为linkfile,执行下面命令的时候,testfile已经存在。

ansible test70 -m file -a "path=/testdir/linkfile state=link src=/testdir/testfile"  

4.在test70上为testfile文件创建硬链接文件,硬链接名为hardfile,执行下面命令的时候,testfile已经存在。

 ansible test70 -m file -a "path=/testdir/hardfile state=hard src=/testdir/testfile" 
 

5.在创建链接文件时,如果源文件不存在,或者链接文件与其他文件同名时,强制覆盖同名文件或者创建链接文件,参考上述force参数的解释。

  ansible test70 -m file -a "path=/testdir/linkfile state=link src=sourcefile force=yes"  
删除

6.删除远程机器上的指定文件或目录

 ansible test70 -m file -a "path=/testdir/testdir state=absent"
更改属主属组

7.在创建文件或目录的时候指定属主,或者修改远程主机上的文件或目录的属主。

ansible test70 -m file -a "path=/testdir/abc state=touch owner=zsy"  
ansible test70 -m file -a "path=/testdir/abc owner=zsy"  
ansible test70 -m file -a "path=/testdir/abc state=directory owner=zsy" 

8.在创建文件或目录的时候指定属组,或者修改远程主机上的文件或目录的属组。

 ansible test70 -m file -a "path=/testdir/abb state=touch group=zsy"  
 ansible test70 -m file -a "path=/testdir/abb group=zsy"  
 ansible test70 -m file -a "path=/testdir/abb state=directory group=zsy" 
更改权限

9.在创建文件或目录的时候指定权限,或者修改远程主机上的文件或目录的权限。

 ansible test70 -m file -a "path=/testdir/abb state=touch mode=0644"  
 ansible test70 -m file -a "path=/testdir/abb mode=0644"  
 ansible test70 -m file -a "path=/testdir/binfile mode=4700"  
 ansible test70 -m file -a "path=/testdir/abb state=directory mode=0644" 

10.当操作远程主机中的目录时,同时递归的将目录中的文件的属主属组都设置为zsy。

 ansible test70 -m file -a "path=/testdir/abd state=directory owner=zsy group=zsy recurse=yes"  

  • 12
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
根据引用和引用的内容,安装kolla-ansibleRHEL系统上的步骤如下: 1. 首先,在RHEL系统上安装Ansible。确保Ansible的版本大于2.6。可以使用以下命令进行安装: ``` pip install ansible ``` 2. 使用pip安装kolla-ansible。可以使用以下命令进行安装: ``` pip install kolla-ansible ``` 3. 安装Kolla-Ansible-Collections的依赖。可以使用以下命令进行安装: ``` kolla-ansible install-deps ``` 4. 进行Docker的换源,并指定Docker版本为20.10.*。 5. 根据引用,如果需要卸载和清理缓存,可以使用以下命令进行操作: ``` kolla-ansible destroy ./all-in-one --yes-i-really-really-mean-it ``` 综上所述,这些是在RHEL系统上安装kolla-ansible步骤。请按照上述步骤进行操作。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [OpenStack Yoga安装部署,手把手使用kolla-ansible部署OpenStack](https://blog.csdn.net/qq_35485875/article/details/128868634)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* *3* [Kolla-ansible 部署 OpenStack all-in-one版(单节点)](https://blog.csdn.net/qq_16538827/article/details/118725691)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

妍妍的宝贝

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值