码迷,mamicode.com
首页 > 其他好文 > 详细

Ansible playbook 批量修改服务器密码 先普通后root用户

时间:2018-01-06 14:30:53      阅读:1147      评论:0      收藏:0      [点我收藏+]

标签:参数   server   method   文件   部署   yaml   rem   etc   拷贝   

 

 

Ansible playbook 批量修改服务器密码

客户的需求:修改所有服务器密码,密码规则为Rfv5%+主机名后3

背景:服务器有CentOS67SuSE9、10、11,root不能直接登录,需先登录普通用户,再切换到root

 

首先在hosts 下面添加一个组[test],下面跟ip,每行一个。

 

ansible基于ssh连接inventory中指定的远程主机时,将以此处的参数指定的属性进行;

ansible_ssh_port

指定ssh 端口

ansible_ssh_user

指定ssh用户

ansible_ssh_pass

指定ssh用户登录是认证密码,明文密码不安全

ansible_sudo_pass

指明sudo时候的密码

cat /etc/ansible/hosts
[test]
192.168.153.132
ansible_ssh_user=ly ansible_ssh_pass=a ansible_su_pass=a

 

修改密码的脚本如下:

cat pswd.sh
#!/bin/bash
 
#``里面的内容是获取主机名后3位,架设主机名为zabbix-agent,则``里面出来的就是ent
#将Rfv5%+ent赋值给xx
xx=Rfv5%+`hostname|grep -oP ‘...$‘`
#修改root密码为Rfv5%+ent,一定要记得是双引号
echo "$xx"|passwd --stdin root

 

main.yaml如下:

---
- hosts:  test
  remote_user: toptea

  tasks:
  - name: transfer file to server
    copy: src=/root/pswd.sh dest=/tmp/pswd.sh mode=755

  - name: zhixing 
    become: yes
    become_method:  su
    shell:  /bin/bash -x /tmp/pswd.sh

 

执行命令即可:

ansible-playbook main.yaml

技术分享图片

 

Playbooks可以称为是Ansible的配置,部署,编排语言。在Playbooks中,你可以定义远程主机要执行的某组动作。

举例子:希望远程主机先安装httpd,然后将本地配置好的配置文件替换远程主机的配置文件,然后启动该服务。

感觉和一个shell脚本差不多吧。

 

Playbooks使用的是 yaml 语言,语法做到最小化。

playbook 由一个或多个 ‘plays’ 组成.它的内容是一个以 ‘plays’ 为元素的列表.

 

下面以如下Playbooks为例讲解多个特性

---
- hosts:  test
  remote_user: toptea
 
  tasks:
  - name: transfer file to server
    copy: src=/root/pswd.sh dest=/tmp/pswd.sh mode=755
 
  - name: zhixing
    become: yes
    become_method:  su
    shell:    /bin/bash -x /tmp/pswd.sh

 

主机与用户

hosts行的内容是要执行任务的目标机器,可以是单个ip,可以是某个主机组

remote_user: ansible 是通过ssh交互的,这里填的就是你能ssh登录服务器的用户。

- hosts:  test
  remote_user: toptea

 

remote_user 可以是全局的,也可以每一个任务定义一个。 如下这个tasks就是用ly去连接执行。

- hosts:  test
  remote_user:  toptea
  tasks:
  - name: test
    ping:
    remote_user:  ly

 

也可以通过su、sudo去执行

- hosts:  test
  remote_user:  toptea
  sudo: yes

 

每一个play包含了一个tasks列表,这个task执行完毕后才会去执行下一个task

tasks:
  - name: transfer file to server
    copy: src=/root/pswd.sh dest=/tmp/pswd.sh mode=755

   

 如下tasks,name 就相当于标识,让你知道这是干嘛的。

 这里是执行从本机拷贝pswd.sh到test主机组里面的主机,并将权限设置为755

 接下来则是切换到su去执行 命令。

 become:        yes        是否允许身份切换

 become_method: su   #切换用户身份的方式,有sudo、su、pbrun等方式,默认为sudo

become_user: root 切换指定的用户

 

  tasks:
  - name: transfer file to server
    copy: src=/root/pswd.sh dest=/tmp/pswd.sh mode=755
 
  - name: zhixing
    become: yes
    become_method:  su
    shell:    /bin/bash -x /tmp/pswd.sh
 
分类: Ansible

 

Ansible playbook 批量修改服务器密码 先普通后root用户

标签:参数   server   method   文件   部署   yaml   rem   etc   拷贝   

原文地址:https://www.cnblogs.com/cheyunhua/p/8213527.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!