ansible配置实战

Ansible是一款轻量级的自动化运维工具,基于Python开发,集合了众多运维工具的优点,实现了批量系统配置,批量程序部署,批量运行命令等功能(puppet,cfengie,chef,func,fabric)。

[TOC]

安装使用

需求:假设在 10.30.3.231 上批量管理 10.30.3.23210.30.3.233 这2台机器。

配置 免密登录

  • 1.登录ansible管理机,su切换到root账户,确认是否已存在公私钥文件(id_rsa、id_rsa.pub),若已存在则可以跳过第2步
[it_support@3.231 ~]# sudo su - root

[root@3.231 ~]# ls -lha ~/.ssh/
-rw-------  1 root root    0 Jun 23  2021 authorized_keys
-rw-r--r--  1 root root 4.5K Nov 16 16:19 known_hosts
  • 2.登录ansible管理机,若 ~/.ssh 目录不存在公私钥文件(id_rsa、id_rsa.pub),可使用 ssh-keygen -t rsa 生成ssh免密登录公私钥(一路回车即可)
[root@3.231 ~]# cat ~/.ssh/id_rsa.pub | grep ssh-rsa || ssh-keygen -t rsa
  • 3.登录ansible管理机,将秘钥分发至需要被管理的节点,实现免密登录
[root@3.231 ~]# ssh-copy-id -p 22 root@10.30.3.232
[root@3.231 ~]# ssh-copy-id -p 22 root@10.30.3.233
  • 4.登录ansible管理机,测试一下免密登录
[root@3.231 ~]# ssh -p 22 root@10.30.3.232
[root@3.232 ~]# exit
[root@3.231 ~]#

配置 ansible

  • 5.登录ansible管理机,先装 epel-release 再装 ansible
[root@3.231 ~]# yum -y install epel-release
[root@3.231 ~]# yum -y install ansible
  • 6.登录ansible管理机,定义分组名称及受控主机清单
cat > /etc/ansible/hosts <<EOF
[k8s]
10.30.3.232 ansible_ssh_port='22'
10.30.3.233 ansible_ssh_port='1618'
EOF
  • 7.登录ansible管理机,针对分组或单个ip分别验证连通性
[root@3.231 ~]# ansible k8s -m shell -a 'who'
10.30.3.232 | CHANGED | rc=0 >>
root     pts/1        2024-01-30 00:49 (10.30.20.150)
root     pts/2        2024-01-30 00:51 (10.30.3.231)
10.30.3.233 | CHANGED | rc=0 >>
root     tty1         2024-01-29 21:50
root     pts/0        2024-01-30 00:49 (10.30.20.150)
root     pts/1        2024-01-30 00:51 (10.30.3.231)

[root@3.231 ~]# ansible 10.30.3.233 -m shell -a 'who'
10.30.3.233 | CHANGED | rc=0 >>
root     tty1         2024-01-29 21:50
root     pts/0        2024-01-30 00:49 (10.30.20.150)
root     pts/1        2024-01-30 01:00 (10.30.3.231)

常用功能

用户模块user

#.1.查看用户模块的帮助
[root@3.231 ~]# ansible-doc user 

#.2.为目标主机创建用户
[root@3.231 ~]# ansible 10.30.3.232 -m user -a 'name=appadmin state=present'

#.3.生成密码
[root@3.231 ~]# echo "Admin_147" | openssl passwd -1 -stdin
$1$dR8sVyjG$h0swJo7q6XZxNsz9NbEfG.

#.4.给新建的用户修改密码
[root@3.231 ~]# ansible 10.30.3.232 -m user -a 'name=appadmin password=$1$dR8sVyjG$h0swJo7q6XZxNsz9NbEfG.'

#.5.修改用户登录sell
[root@3.231 ~]# ansible 10.30.3.232 -m user -a 'name=appadmin shell=/sbin/nolgin append=yes'

#.6.删除用户
[root@3.231 ~]# ansible 10.30.3.232 -m user -a 'name=appadmin state=absent'

软件包管理模块yum

#.1.查询软件包管理模块帮助
[root@3.231 ~]# ansible-doc yum

#.2.给目标主机安装apache
[root@3.231 ~]# ansible 10.30.3.232 -m yum -a 'name=httpd state=latest'

#.3.给目标主机卸载软件
[root@3.231 ~]# ansible 10.30.3.232 -m yum -a 'name=httpd state=absent'

服务模块service

#.1.查看服务模块的帮助
[root@3.231 ~]# ansible-doc service

#.2.打开目标主机的httpd服务
[root@3.231 ~]# ansible 10.30.3.232 -m service -a 'name=httpd state=started'

#.3.设置目标主机的httpd服务为开机自启动
[root@3.231 ~]# ansible 10.30.3.232 -m service -a 'name=httpd state=started enabled=yes'

文件模块file

#.1.查看文件模块的帮助
[root@3.231 ~]# ansible-doc file

#.2.为目标主机创建文件
[root@3.231 ~]# ansible 10.30.3.232 -m file -a 'path=/tmp/88.jpg mode=771 state=touch'

#.3.为目标主机创建目录
[root@3.231 ~]# ansible 10.30.3.232 -m file -a 'path=/tmp/88 mode=770 state=directory'

shell模块

#.1.查看shell模块的帮助
[root@3.231 ~]# ansible-doc shell

#.2.调用目标主机的主机名
[root@3.231 ~]# ansible 10.30.3.232 -m shell -a 'hostname' -o -f 2

#.3.查看目标主机的磁盘挂载
[root@3.231 ~]# ansible 10.30.3.232 -m shell -a 'df -hT'
[root@3.231 ~]# ansible 10.30.3.232 -m shell -a 'df -hT' -o
Copyright © www.sqlfans.cn 2023 All Right Reserved更新时间: 2024-02-02 14:51:37

results matching ""

    No results matching ""