Ansible 运维工具

目录

注意:

指挥机与目标机的Python的大版本必须一致,3.10 vs 3.10, 3.10 false with 3.12

安装

命令

剧本实战:

- 单个公钥分发

- 多个用户建立与公钥分发 

- 删除/回收用户 

- 安装npm 

错误处理


注意:

  • 指挥机与目标机的Python的大版本必须一致,3.10 vs 3.10, 3.10 false with 3.12

安装

apt install ansible

/etc/ansible/hosts , 指定密码或密钥访问分组机器

[k8s_masters]
master0.c0.k8s.sb
  
[k8s_nodes]
node0.c0.k8s.sb
node1.c0.k8s.sb

[k8s:children]
k8s_masters
k8s_nodes

[k8s_masters:vars]
ansible_ssh_user=sbadmin
ansible_ssh_pass="***"
#ansible_ssh_private_key_file=/home/sbadmin/.ssh/id_rsa

[k8s_nodes:vars]
ansible_ssh_user=sbadmin
ansible_ssh_pass="***"
#ansible_ssh_private_key_file=/home/sbadmin/.ssh/id_rsa

/etc/ansible/ansible.cfg

[defaults]
host_key_checking = False

命令

# 运行时指定私钥
ansible all -m ping --key-file /home/user/.ssh/id_rsa

# 某一组机器执行ping
ansible k8s_nodes -m ping

# 不带参数默认走shell命令
ansible k8s -a "df -h" 
= 
ansible k8s -m shell -a "df -h"

# 查看所有主机
ansible all --list-hosts

# 查看所有分组及主机
ansible-inventory --list

# 查看所某分组主机
ansible php --list-hosts

 

剧本实战:

- 单个公钥分发
- hosts: k8s

  tasks:
  - name: Set authorized key took from file
    authorized_key:
      exclusive: True                                                 #清除远程主机之前所有的其他公钥
      key: "{{ lookup('file', '/home/sbadmin/.ssh/id_rsa.pub') }}"    #本机的公钥地址
      user: sbadmin                                                   #被控制的远程服务上的用户名
      state: present                                                  #模式为添加公钥

执行  

ansible-playbook distribute_pub_keys.yaml
- 多个用户建立与公钥分发 

deploy_php_users.yaml

- hosts: php
 
  vars:
    users:
      - root
      - ben
      - abc
 
  tasks:
    - name: "Create user accounts"
      user:
        name: "{{ item }}"
        groups: "website"
      with_items: "{{ users }}" 
    - name: "Add authorized keys"
      authorized_key:
        user: "{{ item }}"
        key: "{{ lookup('file', '/root/ansible_tasks/auths/'+ item + '/id_rsa.pub') }}"
      with_items: "{{ users }}"
    - name: "Allow website users to sudo without a password"
      lineinfile:
        dest: "/etc/sudoers" # path: in version 2.3
        state: "present"
        regexp: "^%website"
        line: "%website ALL=(ALL) NOPASSWD: ALL"

执行: 

ansible-playbook deploy_php_users.yaml
- 删除/回收用户 

revoke_users.yaml

- hosts: php
 
  vars:
    users:
      - user1
      - user2
 
  tasks:
    - name: Delete users
      user:
        name: "{{ item }}"
        state: absent
        remove: yes  # 同时删除用户的主目录和邮件文件等
      loop: "{{ users }}"

 执行: 

ansible-playbook revoke_users.yaml 
- 安装npm 

install_npm.yaml

---
- name: Batch install software on multiple servers
  hosts: python_npm
  become: yes
  tasks:
    - name: Install npm using yum
      yum:
        name: npm
        state: present

错误处理

Failed to connect to the host via ssh: @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@\r\n@    WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!     @\r\n@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@\r\nIT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY!\r\nSomeone could be eavesdropping on you right now (man-in-the-middle attack)!\r\nIt is also possible that a host key has just been changed.

 处理: 清理 ~/.ssh/known_hosts文件中对应的ip主机

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

bennybi

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值