不做大哥好多年 不做大哥好多年
首页
  • MySQL
  • Redis
  • Elasticsearch
  • Kafka
  • Etcd
  • MongoDB
  • TiDB
  • RabbitMQ
  • 01.GO基础
  • 02.面向对象
  • 03.并发编程
  • 04.常用库
  • 05.数据库操作
  • 06.Beego框架
  • 07.Beego商城
  • 08.GIN框架
  • 09.GIN论坛
  • 10.微服务
  • 01.Python基础
  • 02.Python模块
  • 03.Django
  • 04.Flask
  • 05.SYL
  • 06.Celery
  • 10.微服务
  • 01.Java基础
  • 02.面向对象
  • 03.Java进阶
  • 04.Web基础
  • 05.Spring框架
  • 100.微服务
  • Docker
  • K8S
  • 容器原理
  • Istio
  • 数据结构
  • 算法基础
  • 算法题分类
  • 前置知识
  • PyTorch
  • 01.Python
  • 02.GO
  • 03.Java
  • 04.业务问题
  • 05.关键技术
  • 06.项目常识
  • 10.计算机基础
  • Linux基础
  • Linux高级
  • Nginx
  • KeepAlive
  • ansible
  • zabbix
  • Shell
  • Linux内核

逍遥子

不做大哥好多年
首页
  • MySQL
  • Redis
  • Elasticsearch
  • Kafka
  • Etcd
  • MongoDB
  • TiDB
  • RabbitMQ
  • 01.GO基础
  • 02.面向对象
  • 03.并发编程
  • 04.常用库
  • 05.数据库操作
  • 06.Beego框架
  • 07.Beego商城
  • 08.GIN框架
  • 09.GIN论坛
  • 10.微服务
  • 01.Python基础
  • 02.Python模块
  • 03.Django
  • 04.Flask
  • 05.SYL
  • 06.Celery
  • 10.微服务
  • 01.Java基础
  • 02.面向对象
  • 03.Java进阶
  • 04.Web基础
  • 05.Spring框架
  • 100.微服务
  • Docker
  • K8S
  • 容器原理
  • Istio
  • 数据结构
  • 算法基础
  • 算法题分类
  • 前置知识
  • PyTorch
  • 01.Python
  • 02.GO
  • 03.Java
  • 04.业务问题
  • 05.关键技术
  • 06.项目常识
  • 10.计算机基础
  • Linux基础
  • Linux高级
  • Nginx
  • KeepAlive
  • ansible
  • zabbix
  • Shell
  • Linux内核
  • Linux入门

  • Linux高级

  • Nginx

  • Keepalive

  • ansible

    • 01.ansible基础
    • 02.ansible安装配置
    • 03.Inventory(主机清单)
    • 04.ansible基本使用
    • 05.ansible常用模块
      • 01.执行shell命令(command和shell)
        • 1.1 Command
        • 1.2 Shell
      • 02.文件传输(copy和file)
        • 2.1 copy模块
        • 2.2 file模块
      • 03.管理软件包(yum)
      • 04.用户和组(user)
      • 05.从源代码管理系统部署(git)
      • 06.管理服务(service)
      • 07.收集目标主机信息(setup)
    • 06.playbook语法
    • 07.自动部署Tomcat
    • 08.playbook文件复用
    • 09.playbook条件循环
    • 10.角色(Role)
    • 11.ansible部署lnmp
  • zabbix

  • Shell

  • Linux内核

  • Linux
  • ansible
xiaonaiqiang
2021-02-13
目录

05.ansible常用模块

# ansible常用模块

  • 执行shell命令(command和shell)
  • 文件传输(copy和file)
  • 管理软件包(yum)
  • 用户和组(user)
  • 从源代码管理系统部署(git)
  • 管理服务(service)
  • 收集目标主机信息(setup)

# 01.执行shell命令(command和shell)

# 1.1 Command

  • 在Ad-Hoc常用选项中介绍到 -m 用来指定运行的模块,没有指定模块 时,默认使用的是command模块

  • 命令说明:

    • -a:在常用选贡中介绍到,该选项用来为模块提供参数,这里为command模块提供一条命令参数;
    • "df -hl" :在远程主机上执行的命令;
    • webservers:主机清单hosts上配置的主机组,包含192.168.56.66和192.168.56.65。
[root@k8s-node2 ~]# ansible webservers -a "df -hl"
1

# 1.2 Shell

  • 用来在远程主机上执行命令,使用-m 选项指定使用shell模块
  • Command与Shell比较
    • command 和 shell 模块都可以在远程主机上执行命令
    • 但是command不支持变量和管道符操作,所以当需要使用到变量和管道符时需要使用shell模块
[root@k8s-node2 ~]# ansible webservers -m shell -a "ifconfig | grep '192.168.56'"
192.168.56.66 | CHANGED | rc=0 >>
        inet 192.168.56.66  netmask 255.255.255.0  broadcast 192.168.56.255
192.168.56.65 | CHANGED | rc=0 >>
        inet 192.168.56.65  netmask 255.255.255.0  broadcast 192.168.56.255
1
2
3
4
5

5.2

# 02.文件传输(copy和file)

https://docs.ansible.com/ansible/latest/user_guide/intro_adhoc.html

# 2.1 copy模块

  • copy:文件传输模块,可以将文件并行拷贝到多台主机上
[root@k8s-node2 ~]# touch file_test.txt
[root@k8s-node2 ~]# ansible webservers -m copy -a "src=/root/file_test.txt dest=/tmp/file_test.txt"
1
2
  • 使用copy模块传输文件时,可以通过参数设置文件属主、属组和权限
[root@k8s-node2 ~]# ansible webservers -m copy -a "src=/root/file_test.txt dest=/tmp/ owner=root group=root mode=600"
1

# 2.2 file模块

  • 使用file模块可以创建文件和更改文件的所有和权限
[root@k8s-node2 ~]# ansible webservers -m file -a "dest=/tmp/file_test.txt mode=666" -l 192.168.56.65
# 修改远程文件权限为:666;
# -l 指定运行目标主机(过滤),从webservers主机组中找出满足过滤条件的主机来执行远程操作。
1
2
3
  • 使用file模块创建目录
# 创建文件夹
[root@k8s-node2 ~]# ansible webservers -m file -a "dest=/tmp/dir_test owner=root state=directory"
1
2
  • 使用file模块删除文件
# 创建文件
[root@k8s-node2 ~]# ansible webservers -m file -a "dest=/tmp/t1.txt owner=root state=touch"
# 删除文件
[root@k8s-node2 ~]# ansible webservers -m file -a "dest=/tmp/file_test.txt state=absent"
1
2
3
4

# 03.管理软件包(yum)

  • Ansible 提供了yum和apt模块,通过这些模块可以很方便在系统上安装软件包。

  • 项目中使用的是Centos系统,所以可以使用yum模块来安装软件包

  • 命令执行说明:

    • 使用yum模块来安装软件包;
    • name:用来指定安装的软件包名称;
    • state:指定安装的动作(present,installed,latest,absent,removed)
# 安装
[root@k8s-node2 ~]# ansible webservers -m yum -a "name=tcpdump state=latest"
# 卸载
[root@k8s-node2 ~]# ansible webservers -m yum -a "name=tcpdump state=absent"
1
2
3
4

# 04.用户和组(user)

  • 在所有服务器中创建test用户,若已存在,不进行任何操作
[root@k8s-node2 ~]# ansible all -m user -a 'name=test'
1
  • 在所有服务器中删除test用户,但不删除此用户的家目录
[root@k8s-node2 ~]# ansible all -m user -a 'name=test state=absent'
1
  • 在所有服务器中删除test用户,且删除此用户的家目录
[root@k8s-node2 ~]# ansible all -m user -a 'name=test state=absent remove=yes'
1
  • 指定所有服务器中test用户的基本组为admin(需提前存在),不指定时默认与用户名一样
[root@k8s-node2 ~]# ansible all -m user -a 'name=test group=admin'
1
  • 指定所有服务器中test用户的附加组为root和admin
[root@k8s-node2 ~]# ansible all -m user -a 'name=test groups=root,admin append=yes'
1
  • 指定所有服务器中test用户过期时间是2020-05-20
[root@k8s-node2 ~]# date -d 2021-05-20 +%s            #获取对应日期的unix时间戳
1621440000
[root@k8s-node2 ~]# ansible all -m user -a 'name=test expires=1621440000'
1
2
3
  • 修改所有服务器中test用户的密码为'123455'
[root@k8s-node2 ~]# python
>>> import crypt
>>> crypt.crypt('123455')
'$6$B0zo/bCGaUmqFKx8$apGEf9i1Yd4/PE.bhL7P86T6FDir45jE5DQ549CjG3SoWtfPmAQSCDkz2Wt5kXppAlhbTLqOclg45yOz7YH9K/'
>>> exit()
[root@k8s-node2 ~]# ansible all -m user -a 'name=test password="$6$B0zo/bCGaUmqFKx8$apGEf9i1Yd4/PE.bhL7P86T6FDir45jE5DQ549CjG3SoWtfPmAQSCDkz2Wt5kXppAlhbTLqOclg45yOz7YH9K/"'
1
2
3
4
5
6
  • 为所有服务器中test用户生成ssh密钥对,生成在/opt目录下,私钥名id_rsa_test,注释信息"test rsa",私钥密码123455
[root@k8s-node2 ~]# ansible all -m user -a 'name=test generate_ssh_key=yes ssh_key_file=/opt/id_rsa_test ssh_key_comment="test rsa" ssh_key_passphrase=123455'
1

# 05.从源代码管理系统部署(git)

# 拉取ansible代码
[root@k8s-node2 ~]# ansible 192.168.56.66 -m git -a "repo=https://github.com/ansible/ansible.git dest=/tmp/ansible" -u root
1
2

# 06.管理服务(service)

  • 主要是管理服务:启动服务、停止服务
  • 几种服务: started 、 restarted 、 stopped
# 安装 memcached
[root@k8s-node2 ~]# ansible webservers -m yum -a "name=memcached state=latest"
# 启动 memcached
[root@k8s-node2 ~]# ansible webservers -m service -a "name=memcached state=started"
# 设置ansible开机自启动
[root@k8s-node2 ~]# ansible webservers -m service -a "name=memcached enabled=true"
1
2
3
4
5
6

# 07.收集目标主机信息(setup)

[root@k8s-node2 ~]# ansible webservers -m setup                                # 获取主机的信息
[root@k8s-node2 ~]# ansible webservers -m setup -a "filter=ansible_nodename"            # 获取集群名称
[root@k8s-node2 ~]# ansible webservers -m setup -a "filter=ansible_all_ipv4_addresses"     # 获取ipv4地址
[root@k8s-node2 ~]# ansible webservers -m setup -a "filter=ansible_memory_mb"           # 获取主机内存
[root@k8s-node2 ~]# ansible webservers -m setup -a "filter=*mb"          "           # 通过通配符实现模糊匹配,比如以”mb”关键字结尾的信息
1
2
3
4
5
  • 其他常用信息列出如下

ansible_all_ipv4_addresses:仅显示ipv4的信息。 ansible_devices:仅显示磁盘设备信息。 ansible_distribution:显示是什么系统,例:centos,suse等 ansible_distribution_major_version:显示是系统主版本 ansible_distribution_version:仅显示系统版本 ansible_machine:显示系统类型,例:32位,还是64位 ansible_eth0:仅显示eth0的信息 ansible_hostname:仅显示主机名 ansible_kernel:仅显示内核版本 ansible_lvm:显示lvm相关信息 ansible_memtotal_mb:显示系统总内存 ansible_memfree_mb:显示可用系统内存 ansible_memory_mb:详细显示内存情况 ansible_swaptotal_mb:显示总的swap内存 ansible_swapfree_mb:显示swap内存的可用内存 ansible_mounts:显示系统磁盘挂载情况 ansible_processor:显示cpu个数(具体显示每个cpu的型号) ansible_processor_vcpus:显示cpu个数(只显示总的个数)

上次更新: 2024/3/13 15:35:10
04.ansible基本使用
06.playbook语法

← 04.ansible基本使用 06.playbook语法→

最近更新
01
04.数组双指针排序_子数组
03-25
02
08.动态规划
03-25
03
06.回溯算法
03-25
更多文章>
Theme by Vdoing | Copyright © 2019-2025 逍遥子 技术博客 京ICP备2021005373号
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式