ansible批量推送公钥

ansible 批量推送公钥

配置ansible 变量资产方式配置远程节点密码

关闭ansible检测节点公钥

vim   /etc/ansible/ansible.cfg
[defaults]
host_key_checking = False 
配置资产变量

vim /etc/ansible/hosts #或者资产清单文件 hosts.ini

[webserver]
host1  ansible_ssh_user=test ansible_ssh_pass=1
host2
host3

[mysql]
host4
host5

[webserver:vars]
ansible_ssh_user=test 
ansible_ssh_pass=1

[allserver:children]
webserver
mysql

[allserver:vars]
ansible_ssh_user=test
ansible_ssh_pass=1

利用 authorized_key 模块传送公钥

ansible allserver -m authorized_key -a "user=test state=present key={{ lookup('file', '/root/.ssh/id_rsa.pub') }}"

模块选项:

user 指定和远程服务器的这个用户建立信任关系
state 可选值:

  • present 添加公钥
  • absent 删除公钥
  • key 本机用户的公钥,需要使用 lookup 查找到设置的公钥文件

playbook方式

生成一个加密文件

ansible-vault create vault-foo.yml
New Vault password:                         # 输入解密这个这文件的密码
Confirm New Vault password:            # 再次确认密码

#输入密码后会进入vi编辑模式
#添加变量值
ansible_ssh_pass: 1
再次编辑需要执行
ansible-vault  edit vault-foo.yml
Vault password: 
编辑playbook
---
- hosts: all
  remote_user: root  # 连接远程主机的用户,密码是就是加密文件中设置好的 ansible_ssh_pass
  vars_files:
    - foo.yml 加密文件
  tasks:
  - name: set authorized key taken from file
    authorized_key:   #发送公钥的模块
      user: root           #给这个用户发送公钥
      state: present
      key: "{{ lookup \('file','/root/.ssh/id_rsa.pub') }}"
...

执行playbook

需要使用 --ask-vault-pass 参数指定一下解密密码

ansible-playbook -i hosts send-pubkey.yml --limit dbservers --ask-vault-pass
Vault password:

也可以在/etc/ansible/ansible.cfg文件中配置 default_vault_password_file的值指向一个文件,这个文件中保存了解密的密码

vault_password_file = /path/to/vault_password_file

这样执行playbook时就不用使用–ask-vault-pass参数了

ansible-playbook -i hosts send-pubkey.yml --limit dbservers
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值