一、Ansible安装
1. yum源安装
基于centos7.9和默认Python2.7安装。
1 2 yum install -y http://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
2. 验证ansible安装结果
查看版本
1 2 3 4 5 6 7 [root@localhost ansible]# ansible --version ansible 2.9.27 config file = /etc/ansible/ansible.cfg configured module search path = [u'/root/.ansible/plugins/modules', u'/usr/share/ansible/plugins/modules'] ansible python module location = /usr/lib/python2.7/site-packages/ansible executable location = /usr/bin/ansible python version = 2.7.5 (default, Oct 14 2020, 14:45:30) [GCC 4.8.5 20150623 (Red Hat 4.8.5-44)]
查看/etc/ansible/路径下配置文件
1 2 3 4 5 [root@localhost ansible]# ll /etc/ansible/ total 28 -rw-r--r--. 1 root root 19983 May 23 04:53 ansible.cfg -rw-r--r--. 1 root root 1219 May 23 04:32 hosts drwxr-xr-x. 2 root root 6 Jan 15 2022 roles
3. 编辑host文件
在/etc/ansible/hosts文件里面,添加三台测试机器的用户信息。
当然,此方式不安全,大家都知道。更安全的是配置私钥连接或者将密码加密。
1 2 3 4 [kubernetes] 192.168.132.129 ansible_ssh_user=root ansible_ssh_pass='***' 192.168.132.130 ansible_ssh_user=root ansible_ssh_pass='***' 192.168.132.131 ansible_ssh_user=root ansible_ssh_pass='***'
4. 编辑playbook sample
在/etc/ansible/路径下添加test.yml文件如下,hosts: kubernetes表示对应的[3. 编辑host文件]谈到的服务器组。tasks则是执行任务,name遵守开发命名规范即可。
命令含义:将字符串kongkong输出到/etc/kongkong.txt文件中
1 2 3 4 5 - hosts: kubernetes gather_facts: No tasks: - name: echo test data to file shell: echo kongkong >> /etc/kongkong.txt
5. 执行测试
查看执行结果ok=1 changed=1表示执行成功,update1个。
1 2 3 4 5 6 7 8 9 10 11 12 13 [root@localhost ansible]# ansible-playbook test.yml PLAY [kubernetes] **************************************************************************************************** TASK [find file] ***************************************************************************************************** changed: [192.168.132.131] changed: [192.168.132.130] changed: [192.168.132.129] PLAY RECAP *********************************************************************************************************** 192.168.132.129 : ok=1 changed=1 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0 192.168.132.130 : ok=1 changed=1 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0 192.168.132.131 : ok=1 changed=1 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
6. 验证测试结果
到192.168.132.[129-130]任意一台机器,查看如下结果,表示成功。
1 2 [root@localhost ~]# cat /etc/kongkong.txt kongkong
二、Ansible配置
1. 主机分组
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 # 密码设置 [master] 192.168.132.129 ansible_ssh_user=root ansible_ssh_pass='***' zk_myid=1 [node1] 192.168.132.130 ansible_ssh_user=root ansible_ssh_pass='***' zk_myid=2 [node2] 192.168.132.131 ansible_ssh_user=root ansible_ssh_pass='***' zk_myid=3 # 分组设置 [kubernetes:children] master node1 node2
2.测试分发文件到所有主机
1 ansible all -m copy -a "src=/etc/hosts dest=/tmp"
3.通过ansible批量更新hostname
配置HOST,默认配置在inventory = /etc/ansible/hosts
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 [local-node001] 192.168.139.11 hostname=local-node001 ansible_ssh_user=dahouzi ansible_ssh_pass='dahouzi' ansible_become_pass="dahouzi" [local-node002] 192.168.139.12 hostname=local-node002 ansible_ssh_user=dahouzi ansible_ssh_pass='dahouzi' ansible_become_pass="dahouzi" [local-node003] 192.168.139.13 hostname=local-node003 ansible_ssh_user=dahouzi ansible_ssh_pass='dahouzi' ansible_become_pass="dahouzi" [local-node004] 192.168.139.14 hostname=local-node004 ansible_ssh_user=dahouzi ansible_ssh_pass='dahouzi' ansible_become_pass="dahouzi" [local-node005] 192.168.139.15 hostname=local-node005 ansible_ssh_user=dahouzi ansible_ssh_pass='dahouzi' ansible_become_pass="dahouzi" [local-node006] 192.168.139.16 hostname=local-node006 ansible_ssh_user=dahouzi ansible_ssh_pass='dahouzi' ansible_become_pass="dahouzi" [local-node007] 192.168.139.17 hostname=local-node007 ansible_ssh_user=dahouzi ansible_ssh_pass='dahouzi' ansible_become_pass="dahouzi" [local-node008] 192.168.139.18 hostname=local-node008 ansible_ssh_user=dahouzi ansible_ssh_pass='dahouzi' ansible_become_pass="dahouzi" [localcluser:children] local-node001 local-node002 local-node003 local-node004 local-node005 local-node006 local-node007 local-node008
编辑和执行主机命名脚本
创建文件:set_hostname.yaml
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 - hosts: localcluser become: yes become_user: root become_method: sudo tasks: - name: set hostname shell: hostnamectl set-hostname {{hostname}} ansible-playbook set_hostname.yaml [WARNING]: Invalid characters were found in group names but not replaced, use -vvvv to see details PLAY [localcluser] ***************** TASK [Gathering Facts] ************* ok: [192.168.10.182] ok: [192.168.10.183] ok: [192.168.10.185] TASK [set hostname] **************** changed: [192.168.10.182] changed: [192.168.10.183] changed: [192.168.10.181] PLAY RECAP ************************* 192.168.10.181 : ok=2 changed=1 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0