1 Ansible的安装及部署

目录

####1.Ansible对于企业运维的重大意义####

####2.Ansible的安装####

####3.构建Anisble清单####

 ####4.Ansible配置文件参数详解####

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

#2.常用配置参数


Ansible        172.25.x.254
node1        172.25.x.1
node2        172.25.x.2
node3        172.25.x.3

####1.Ansible对于企业运维的重大意义####

        在企业中,一个运维人员要对多台机子进行操作,shell脚本可以对于单独的主机进行操作,ansible存在的意义是可以对多台主机进行操作。

Ansible 自动运维工具特点:

        nsible 与 Saltstack 均是基于 Python 语言开发,Ansible 只需要在一台普通的服务器上运行即可,不需要在客户端服务器上安装客户端。因为 Ansible 是基于 SSH 远程管理,而Linux服务器大都离不开SSH,所以Ansible不需要为配置工作添加额外的支持。
Ansible 安装使用非常简单,而且基于上千个插件和模块实现各种软件、平台、版本的管理,支持虚拟容器多层级的部署。很多读者在使用 Ansible 工具时,认为 Ansible比 Saltstatck 执行效率慢,其实不是软件本身慢,是由于 SSH 服务慢,可以优化 SSH 连接速度及使用 Ansible 加速模块,满足企业上万台服务器的维护和管理。

####2.Ansible的安装####

实验环境: 一台主控机  一台被控机

主控机设定:

hostnamectl set-hostname westos_ansible.westos.org

 被控机设定:

hostnamectl set-hostname westos_nodel.westos.org

 真机

firewall-cmd --add-masquerade          ##开启后,虚拟机即可上网

再分别连接两台机子进行操作并配好网络仓库

在epel源里进行下载

epel for rhel8

wget下载  rpm -ivh进行安装

ls /etc/yum.repos.d/               ##进行查看

dnf search ansible  

dnf install yum-utils -y

yumdownloader ansible --destdir=/mnt --resolve              ##进行下载并下载到/mnt下

cd /mnt                ##即可看到

dnf install sshpass-1.06-9.el8.x86_64.rpm -y                   ##必须先下在sshpass这个包

dnf install ansible-2.9.24-1.el8.noarch.rpm -y

ansible --version                        ##检测是否安装成功,安装成功后,即可执行此命令显示信息

                                                          ansible是个插件,不需要启动任何服务,只对内服务


ls /etc/yum.repos.d/               ##进行查看

dnf search ansible  

dnf install ansble.noarch

dnf install yum-utils -y

yumdownloader ansible --help

yumdownloader ansible --destdir=/mnt --resolve              ##进行下载并下载到/mnt下

cd /mnt                ##即可看到
dnf install sshpass-1.06-9.el8.x86_64.rpm -y                   ##必须先下在sshpass这个包

dnf install ansible-2.9.24-1.el8.noarch.rpm -y

ansible --version                        ##检测是否安装成功,安装成功后,即可执行此命令显示信息

                                                          ansible是个插件,不需要启动任何服务,只对内服务

####3.构建Anisble清单####

ansible的基本信息:

cd /etc/ansible            ##主配置目录
/etc/ansible/ansible.conf        ##全局配置文件,默认很少修改
/etc/ansible/hosts                      ##全局清单文件 清单就是ansible控制主机的列表

cd /etc/ansible            ##主配置目录
 ls
ansible.cfg  hosts  roles        ## ansible.cfg 清单文件 hosts 默认清单文件 roles 角色
ansible 172.25.254.217 -m ping           ## m 模块 ##当要控制218主机时首先会在ansible主机中
					  #生成py脚本然后远程用过sshd服务传输到被控主机中
					  #在传文件过程中需要后者的认证通过
                                          #因为217主机没有匹配到配置文件 管理清单中没有217这台主机  所以不能对其控制
ansible all --list-hosts                  ##列出清单中的所有主机
vim /etc/ansible/hosts             ##管理清单,添加被控主机
172.25.254.217     ##添加成功
ansible all --list-hosts      ##列出添加主机
ansible 172.25.254.217 -m ping -k        ## k 当执行ansible命令时,询问ssh密码 输入密码即可访问成功 实现ansible管理
172.25.254.217 | SUCCESS => {
    "ansible_facts": {
        "discovered_interpreter_python": "/usr/libexec/platform-python"
    },
    "changed": false,
    "ping": "pong"        ##显示pong回馈 表示218主机之间可以实现ansible的管理
}

免密认证

被控主机

useradd devops                        ##被控主机一般都为普通用户

echo westos | passwd --stdin devops  

主控机

ssh-keygen            ##生成key

ssh-copy-id -i /root/.ssh/id_rsa.pub devops@172.25.254.217     ##对远程被控机进行加密

ansible 172.25.254.217 -m ping -u devops           ##不需要密码即可对指定用户进行控制

对被控机进行操作

被控机

visudo                ##因为被控机一般为普通用户,所以要进行权力下放

    100 root    ALL=(ALL)       ALL
    101 devops    ALL=(ALL)       NOPASSWD: ALL       ##NOPASSWD 免密

主控机

ansible 172.25.254.217 -m shell -a 'touch /mnt/westosfile' -u devops --become -K    ##即可对被控机进行操作 -K 输入密码 (NOPASSWD即可不用)

清单

cd /etc/ansible

vim westos

172.25.254.111

ansible all --list

ansible all -i westos --list         ## -i 指定清单

一般都是用默认清单进行操作

vim hosts                    ##默认清单

[wesos1]

172.25.254.117

[westos2]

172.25.254.217

[westos:children]

westos1

westos2

anasible westos --list           ##嵌套式清单

  hosts (2):
    172.25.254.217
    172.25.254.117

vim hosts   

[westos2]

172.25.254.[90:100]

ansible westos2 --list            ##显示 90-100 的主机

ansible命令指定清单的正则表达式
*        ##所有
        ##172.25.254.*
        ##westos*

:        ##逻辑或
        ##westos1:linux
        ##172.25.254.100:172.25.254.200

:&        ##逻辑与
        ##westos1:&linux
        ##主机即在westos1清单也在linux清单中

:!        ##逻辑非
        ##westos1:!linux
        ##在westos1中不在linux中

~        ##以关键字开头

~(str1|str2)    ##以条件1或者条件2开头      

 ####4.Ansible配置文件参数详解####

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

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

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

visudo                                     ##编辑权力下放配置文件
devops  ALL=(ALL)       NOPASSWD: ALL
visudo                               ##生成新的密钥
ssh-copy-id -i /root/.ssh/id_rsa.pub devops@172.25.254.118    ##将密钥传输给118主机中的devops用户
ssh-copy-id -i /root/.ssh/id_rsa.pub devops@172.25.254.218    ##将密钥传输给218主机中的devops用户

#2.常用配置参数

vim /etc/ansible/ansible.cfg
#[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=                ##日志文件路径

71  host_key_checking= False        ##不在询问时候接受受控主机的key
107 remote_user=devops            ##执行ansible控制受控主机时用到的链接远程主机的用户为devops
114 module_name=ping            ##ansible命令运行时默使用模块

[privilege_escalation]            ##身份信息设定
become=Ture                ##连接后是否自动切换用户
become_method=sudo            ##设定切换用户的方式,通常用sudo
become_user=root            ##在受管主机中切换到的用户,通常为root
become_ask_pass=Falese            ##是否需要为become_method提示输入密码,默认为false

ansible westos -m ping            ##ping【westos组】中的受控主机的网络

 练习:

主控机 root用户:
ssh-keygen        ##生成密钥   
useradd rtt
echo westos | passwd --stdin rtt

useradd devops
echo westos | passwd --stdin devops
useradd devops
echo westos | passwd --stdin devops
ssh-copy-id -i /root/.ssh/id_rsa.pub devops@172.25.254.172        ##对172主机进行加密
ssh-copy-id -i /root/.ssh/id_rsa.pub devops@172.25.254.254        ##对254主机进行加密

主控机中:
su - rtt
mkdir ~/ansible
vim ansible.cfg            ##编辑主配置文件
[defaults]
inventory      = ~/ansible/inventory
ask_pass      = False
host_key_checking = False
module_name = shell
remote_user = devops

[privilege_escalation]
become=True
become_method=sudo
become_user=root
become_ask_pass=False

vim inventory                ##编辑清单
[westos]
172.25.254.172
172.25.254.254
scp root@172.25.254.172:~/.ssh/id_rsa /home/rtt/.ssh/         ##因为 rtt 用户没有权限,所以将root用户上的锁烤过来

[root@westos_ansible ~]# visudo
devops  ALL=(ALL)       NOPASSWD: ALL            ## 172主机 第100行加devops用户免密权限

[root@westos_nodel mnt]# visudo                  ## 254主机 第100行加devops用户免密权限
devops  ALL=(ALL)       NOPASSWD: ALL

主控机 rtt用户
[rtt@westos_ansible ansible]$ ansible westos -m ping       ##即可连接成功
172.25.254.254 | SUCCESS => {
    "ansible_facts": {
        "discovered_interpreter_python": "/usr/libexec/platform-python"
    },
    "changed": false,
    "ping": "pong"
}
172.25.254.172 | SUCCESS => {
    "ansible_facts": {
        "discovered_interpreter_python": "/usr/libexec/platform-python"
    },
    "changed": false,
    "ping": "pong"
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值