ansible基础

A.ansible的作用:用一台主机对多台主机进行控制。
搭建实验环境,至少搭建三台主机
两台受控主机不需要做什么
主控机用真机
firewall-cmd --add-masqueradd
Init 3 关闭图形
用ansible主机来控制其他两台主机

在安装ansible时,要搭建epel源。
在rhel8 epel网页找网址
wget 网址下载下来
rpm -ivh 软件包
cd /etc/yum.repos.d
ls
dnf search ansible
dnf install ansible.noarch

B.ansible清单,就是管理名单,列表:用一个短的字符串来表示一连串的主机。
按照要管理主机的类别,对主机列成清单,对受控主机进行管理。
在系统中ansible的默认配置文件

rpm -qc ansible
#查看配置文件
/etc/ansible/ansible.cfg  #配置文件
/etc/ansible/hosts  #全局清单,针对所有用户都生效的清单

写清单

#单层清单
[westos]  #用[]括起来,表示是个列表
172.25.254.100
172.25.254.200
[linux]
172.25.254.50

#嵌套式清单
[test:children] #当我使用test清单的时候,代表的是两个子清单
westos
linux
#清空历史命令
history -c
ansible all --list-hosts  #查看受控主机ip
ansible 列表名称 --list-hosts  #查看列表名称的ip

主机的规范化表示名称

172.25.254.[1:10]  #表示1到10的10台主机

ansible命令中指定清单的正则表达式

#例子
vim /mnt/westos
node[1:10].westos.org
ansible -i /mnt/westos all --list  #-i表示指定清单

vim /mnt/westos
westos.westos.org
node[1:10].westos.org
ansible -i /mnt/westos ungrouped --list #显示不在列表中的主机

*表示所有
172.25.254.*
westos*
:表示逻辑或
:&表示逻辑与
ansible 'westos:&linux' --list-hosts
:!逻辑非
ansible 'westos:!linux' --list-hosts
~以关键字开头
ansible -i /mnt/westos ~node --list   #以node开头
~(str1|str2)
ansible -i /mnt/westos ~(node1|node2) --list  #以node1或node2开头的

C.ansible配置文件参数详解
ansible 清单中组名称 -m 模块 -u remote_user #模块相当于命令,-u 远程主机的用户,这个用户在远程主机中执行这个模块。

~/.vimrc #编辑这个文件所有的shell都可以用
set nu

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

#[default]  ##基本信息设定
inventory=   ##指定清单路径 ,/mnt/westos
remote_user=  ##在受控主机上登录的用户名称,未指定使用当前用户。限定远程登录的用户是谁
ask_pass=     ##是否提示输入ssh密码。如果公钥登录设定为false
library=      ##库文件存放目录
local_tmp=    ##本机临时命令执行目录
remote_tmp=   ##远程主机临时py命令文件存放目录,主机生成的py文件上传到受控主机的什么目录中。一般情况下是 ~/.ansible/tmp
local_tmp= ~/.ansible/tmp 本机生成py文件的存放目录
forks=        ##默认并发数量,ansible一次并发处理的主机数量
host_key_checking=   ##第一次连接受管主机时是否要输入yes建立host_key
sudo_user=    ##默认sudo用户,我做所有命令的时候,都实行的是sudo命令.并且转换成的用户身份是root。
ask_suso_pass=  ##每次在受控主机执行ansible命令时是否询问sudo密码
module_name=    ##默认模板,默认使用command,可以修改为shell
log_path=       ##日志文件路劲

[privilege_escalation]   #身份信息设定
become=                  ##连接后是否自动切换用户 True
become_method=           ##设定切换用户的方式,通常用sudo
become_user=             ##在受管主机中切换到的用户,通常为root
become_ask_pass=         ##是否需要为become_method提示输入密码,默认为false
ansible westos -m ping -k #k表示输入密码
ansible westos -m shell -a 'hostname' -k #-a表示shell的参数
ansible westos -m shell -a "whoami" -k
ansible westos -m shell -a "whoami" -k -u root #-u指定用户身份,如果没有的话,就用remote_user指定的身份

ansible的运行方式是在本机把命令转换成py脚本,上传到远程主机,然后执行,执行完了,便会自动删除掉。

1.问题:ssh免密
ansible私有配置方法
在ansible的主机上

ssh-keygen  ##生成密钥
cd .ssh/
ls
ssh-copy-id -i id_rsa.pub westos@172.25.254.100
ssh-copy-id -i id_rsa.pub westos@172.25.254.200

在两台受控主机上

visudo
westos ALL=(root) NOPASSWD: ALL
vim /etc/ansible/ansible.cfg
become_ask_pass=False
24#ask_sudo_pass = True
ansible westos -m shell -a 'useradd test'

在这其中遇到了问题
wheel ALL=(ALL) ALL注释掉
问题2:有些人想用sudo,有些人想用westos,有些人想用自己的用户
此时:
vim /etc/ansible/ansible.cfg

#remote_user = westos
#become= True                 ##连接后是否自动切换用户 True
#become_method= sudo          ##设定切换用户的方式,通常用sudo
#become_user= root            ##在受管主机中切换到的用户,通常为root
#become_ask_pass= Fslse

生成ansible用户自己的配置

在家目录中
cd
ls
mkdir .ansible
cp /etc/ansible/ansible.cfg .
vim /ansible.cfg
14inventory =/root/.ansible/inventory
remote_user = westos
#roles_path = /etc/ansible/roles
host_key_checking = False
module_name = shell

[privilege_escalation]
become= True                
become_method= sudo         
become_user= root    
become_ask_pass= False
tail /etc/ansible/hosts > inventory
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值