ansible become使用

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ansible become使用相关的知识,希望对你有一定的参考价值。

参考技术A 原文链接
Ansible 1.9之前允许用户使用sudo和有限的su命令来以不同用户的身份/权限远程登陆执行task,及创建资源. 在1.9版本中’become’取代了之前的sudo/su,

Ansible执行playbooks遇到需要提权的情况,除了要在yml文件里面设置become:True之外,还需要在hosts配置文件配置密码或者在运行playbook命令的时候加上输入密码参数

1、在hosts文件添加,ansible_become_pass=password
2、运行命令的时候加上 –ask-become-pass

此指令集还有:
become
等同于添加 ‘sudo:’ 或 ‘su:’ ,默认为sudo,被控主机为centos的话需要设置become_method为su
become_user
等同于添加 ‘sudo_user:’ 或 ‘su_user:’
become_method
可以设置的值为为:[sudo/su/pbrun/pfexec/doas]

hosts文件可设置变量
ansible_become、ansible_become_user、ansible_become_method、ansible_become_pass,意思同上

ansible 常用命令

**# 使用此user的su执行操作,默认为root,已废弃,使用become替代 -b --become 使用become的方式升级权限 因为我们使用的是普通用户来操作** -i 目标主机列表 -m 指定模块名称 **ansible ping 模块** ansible -i /etc/ansible/ssh/hosts all -m ping -b **ansible copy 模块** -a 模块的参数或者命令 force=yes:用来强制取消软件安装过程中的交互确认提示 第一次使用时候 ansible -i /etc/ansible/ssh/hosts all -m copy -a "src=/root/test.sh dest=/tmp/test.sh mode=755 owner=root group=root force=yes" -b content:表示文件内容把helloworld加入test.txt backup=yes 备份 ansible -i /etc/ansible/ssh/hosts huawei -m copy -a ‘content="hello world" dest=/tmp/test.txt backup=yes mode=755 owner=root‘ -b **ansible command 模块 主要执行linux基础命令** ansible -i /etc/ansible/ssh/hosts all -m command -a "date" -b ansible -i /etc/ansible/ssh/hosts huawei -m command -a "systemctl start nginx" -b **ansible yum 模块** 主要用于软件安装 升级 卸载absent name: 安装最新版本的apache yum: name=httpd state=latest name: 移除apache yum: name=httpd state=absent name: 安装一个特殊版本的apache yum: name=httpd-2.2.29-1.4.amzn1 state=present name: 升级所有的软件包 yum: name=* state=latest name: 从一个远程yum仓库安装nginx yum: name=http://nginx.org/packages/centos/6/noarch/RPMS/nginx-release-centos-6-0.el6.ngx.noarch.rpm state=present name: 从本地仓库安装nginx yum: name=/usr/local/src/nginx-release-centos-6-0.el6.ngx.noarch.rpm state=present name: 安装整个Development tools相关的软件包 yum: name="@Development tools" state=present ansible -i /etc/ansible/ssh/hosts huawei -m yum -a "name=sysstat,screen state=installed" -b **ansible file模块** 文件、创建、删除、修改、权限、属性、维护和管理 修改文件属性 ansible -i /etc/ansible/ssh/hosts huawei -m file -a "path=/tmp/test.txt owner=nginx group=nginx mode=0644" -b 生成链接文件 ansible -i /etc/ansible/ssh/hosts huawei -m file -a "src=/root/test.sh dest=/root/testlink.sh owner=root group=root state=link force=yes" -b 创建空文件 ansible -i /etc/ansible/ssh/hosts huawei -m file -a "path=/root/abc.sh state=touch mode=0644" -b 创建空目录 ansible -i /etc/ansible/ssh/hosts huawei -m file -a "path=/root/abc state=directory mode=755" -b 删除目录或文件,强制执行 ansible -i /etc/ansible/ssh/hosts huawei -m file -a "path=/root/abc state=absent force=yes" -b **ansible user group模块** 生成用户、删除用户 生成用户 ansible -i /etc/ansible/ssh/hosts huawei -m user -a "name=test password=1DhUWqz2JZqc home=/home uid=999 comment=‘this is a ansible test user‘ shell=/bin/sh" -b 删除用户remove是否移除家目录 ansible -i /etc/ansible/ssh/hosts huawei -m user -a "name=test state=absent remove=yes force=yes" -b 生成组 ansible -i /etc/ansible/ssh/hosts huawei -m group -a ‘name=g1 gid=666 state=present system=yes‘ -b 删除组 ansible -i /etc/ansible/ssh/hosts huawei -m group -a ‘name=g1 state=absent‘ -b **ansible cron 模块** present(添加)、absent(移除) job:任何计划执行的命令,state要等于present 同步时间每天凌晨0点0分 ansible -i /etc/ansible/ssh/hosts huawei -m cron -a "minute=0 hour=0 day=* weekday=* name=‘server status‘ job=‘/usr/sbin/ntpdat 139.224.227.121‘" -b 备份 ansible -i /etc/ansible/ssh/hosts huawei -m cron -a "minute=0 hour=0 day=* month=* weekday=* name=‘Ntpdate server for sync time‘ backup=yes job=‘ntpdate www.lcl.com‘" 删除 ansible -i /etc/ansible/ssh/hosts huawei -m cron -a "name=‘server status‘ state=absent" -b **ansible 修改主机名字:hostname** ansible -i /etc/ansible/ssh/hosts huawei -m hostname -a "name=ansible-test245" -b **Ansible synchronize模块主要用于目录、文件的同步,主要基于rsync命令工具同步目录和文件** (1)常用的src为源目录,dest为目标目录,示例为将远程主机的/tmp/目录同步为本地Ansible服务器的/tmp/目录 需要些安装rsync 软件 ansible -i /etc/ansible/ssh/hosts huawei -m synchronize -a "src=/tmp/ dest=/tmp/" -b (2)compress=yes表示开启压缩,delete表示数据一致,rsync_opts表示同步参数,–exclude表示排除文件 ansible -i /etc/ansible/ssh/hosts huawei -m synchronize -a "src=/tmp dest=/mnt compress=yes delete=yes archive=yes rsync_opts=--exclude=*.txt" #这句表示把本地的/tmp目录以及里面除了.txt结尾的文件同步到huawei 的/mnt目录里面,并且同步/tmp目录以及文件的属性,还要删除本地没有但远程主机有的文件 **Ansible shell模块主要用于远程客户端上执行各种shell命令或者运行脚本** (1)远程执行shell脚本,并把结果追加至服务器/tmp/var.log文件,这种用shell执行而不用command,就是因为command 不支持变量、重定向、管道符等操作 ansible -i /etc/ansible/ssh/hosts huawei -m shell -a "/bin/sh /mnt/test.sh >> /tmp/var.log" -b ansible -i /etc/ansible/ssh/hosts huawei -m command -a "cat /tmp/var.log" -b (2)执行之前切换目录,屏蔽警告信息,创建目录 ansible -i /etc/ansible/ssh/hosts huawei -m shell -a "mkdir -p `date +%F` chdir=/tmp/ warn=no" -b ##这里是为了创建一个今天日期的目录,所以date +%F不是引号而是和shell脚本中使用命令时使用的反引号 (3)用shell可以使用管道符,比如查看远程客户端nginx服务是否启动,用默认的command模块就会报错,这里也显示shell 模块和command模块的区别 ansible -i /etc/ansible/ssh/hosts huawei -m shell -a "ps -ef | grep http" [root@baidu tmp]# ansible -i /etc/ansible/ssh/hosts huawei -m command -a "ps -ef | grep nginx" 1.1.1.1 | FAILED | rc=1 >> error: garbage option Usage: ps [options] Try ‘ps --help <simple|list|output|threads|misc|all>‘ or ‘ps --help <s|l|o|t|m|a>‘ for additional help text. For more details see ps(1).non-zero return code **Ansible常用模块-script模块** script 模块可以帮助我们在远程主机上执行 ansible 管理主机上的脚本,也就是说,脚本一直存在于 ansible 管理主机本 地,不需要手动拷贝到远程主机后再执行。 ansible -i /etc/ansible/ssh/hosts all -m script -a "test.sh" -b #需要在脚本所在目录里面执行 **Ansible service模块主要用于远程客户端各种服务管理,包括启动、停止、重启、重新加载等** enabled:是否开机启动服务 name:服务名称 runlevel:服务启动级别 arguments:服务命令行参数传递 state:服务操作状态,状态包括started、stopped、restarted、reloaded #停止nginx ansible -i /etc/ansible/ssh/hosts huawei -m service -a "name=nginx state=stopped" -b #将服务设置成开机自启动 ansible -i /etc/ansible/ssh/hosts huawei -m service -a "name=nginx enabled=yes" -b

以上是关于ansible become使用的主要内容,如果未能解决你的问题,请参考以下文章

ansible 常用命令

Ansible - 带有_fileglob的循环 - become_user不工作 - 在源机器上运行操作

Ansible-ansible命令

Ansible------常用功能

ansible——playbook中的关键字

ansible使用sudo