【精选】Ansible自动化运维工具概述、安装使用,细节拿捏,看这一篇足够了(超详细)

目录

 

Ansible概述

了解Ansible是什么?

了解Ansible的工作原理是什么?它如何与远程主机进行通信?

了解什么是Ansible模块?

描述Ansible是如何工作的?

Ansible介绍

Ansible安装

1、基础环境准备

2、拉取网络yum源

3、安装ansible工具

4、配置文件

5、配置免密认证(SSH密钥认证)

Ansible使用

ansible命令基本语法

ansible模块

ansible模块的使用

ping模块

shell模块

command模块 

copy模块 

user模块

file模块

yum模块

service模块

ansible巧手一练


 

Ansible概述

了解Ansible是什么?

Ansible是一个自动化运维工具,基于Python开发, 集合了众多运维工具的优点,可以实现批量系统配置、批量程序部署、批量运行命令等功能。用于配置和管理计算机系统。其核心组件包括Ansible控制节点(主控端)和Ansible远程节点(被控端) .并且它是基于模块工作的,本身没有批量部署的能力,真正批量部署的是ansible所运行的模块,而ansible只是提供一种框架。ansible不需要在远程主机上安装client/agents,因为它们是基于ssh来和远程主机通讯的。

 

了解Ansible的工作原理是什么?它如何与远程主机进行通信?

Ansible使用SSH协议与远程主机进行通信。它在控制节点上执行任务,并通过SSH连接到远程主机,通过执行命令或复制文件来管理和配置远程主机。

 

了解什么是Ansible模块?

模块被认为是Ansible的工作单元。每个模块大多是独立的,可以用标准的脚本语言编写,如Python. Perl、 Ruby. bash等。 模块的一个重要属性是幂等性,意味着一个操作执行多次不会产生副作用。

 

描述Ansible是如何工作的?

Ansible是由各个节点和控制机器组成。控制机器是安装Ansible的地方, 节点由这些机器通过SSH管理。借助SSH协议, 控制机器可以部署临时存储在远程节点上的模块。 

 控制机器使用ansible或者ansible—playbook在服务器終端输入的Ansible命令集或者playbook后, Ansible会遵循预先编排的规则将PLAYbook逐条拆解为Play,再将Play组织成Ansible可以识别的任务tasks, 随后调用任务涉及到的所有MODULES及PLUGINS,根据主机清单INVENTORY中定义的主机列表通过SSH协议将任务集以临时文件或者命令的形式传输到远程节点井返回结果,如果是临时文件则执行完毕后自动删除。

 

Ansible介绍

Ansible是一种开源的自动化工具,用于配置管理、应用程序部署、编排和远程操作系统管理。它允许用户通过简单的声明性语法来描述系统配置和部署过程,并可以自动化执行这些任务。

Ansible使用SSH协议与远程主机进行通信,而不需要在远程主机上安装额外的客户端软件。它使用YAML作为配置文件格式,使其易于阅读和编写。

Ansible的主要特点包括:

  1. 简单易用:Ansible的语法简单易懂,易于学习和使用。用户可以通过编写简洁的Playbooks来描述系统配置和任务,而无需编写复杂的代码。

  2. 无需客户端:Ansible使用SSH协议与远程主机通信,不需要在远程主机上安装额外的客户端软件。这使得Ansible在部署和管理大规模的主机群时非常方便。

  3. 基于模块化:Ansible的功能是通过模块实现的,用户可以使用现有的模块来完成各种任务,也可以编写自己的模块扩展功能。模块化的设计使得Ansible具有很强的可扩展性和灵活性。

  4. 基于剧本(Playbooks):Ansible使用Playbooks来描述系统配置和任务,一个Playbook可以包含多个任务,可以按顺序执行,也可以并行执行。Playbooks可以通过变量和条件语句实现灵活的控制流程。

  5. 自动化和可重复性:Ansible的主要目标是提供自动化和可重复性,用户只需要编写一次配置和任务,就可以重复执行,保证系统配置的一致性。

总之,Ansible是一种简单易用、无需客户端、基于模块化和剧本的自动化工具,可以实现系统配置、应用部署和远程操作系统管理等任务。它是DevOps领域非常受欢迎的工具之一。

 

Ansible安装

1、基础环境准备

56382981de0a4643b60b2017d52f1bdb.png

  • 网络配置

三台主机修改配置文件/etc/sysconfig/network-scripts/ifcfg-eth0(网卡名根据自己实际情况而定)
修改

BOOTPROTO=static                #静态分配
ONBOOT=yes                          #开启该网卡

 

末行新增(这里以一台主机配置为例,其余两台参照自行配置)

IPADDR=192.168.126.6                         (根据自己网络情况配置IP)
NETMASK=255.255.255.0
GATEWAY=192.168.126.2                      (根据自己网络情况配置网关)
DNS1=192.168.126.2                              (这里我是NET网络模式,配置DNS为网关地址)
DNS2=114.114.114.114

  • 主机名设置

ansible

[root@localhost ~]# hostnamectl set-hostname ansible
[root@localhost ~]# bash
[root@ansible ~]#

 

work1

[root@localhost ~]# hostnamectl set-hostname work1
[root@localhost ~]# bash
[root@work1 ~]#

 

work2

[root@localhost ~]# hostnamectl set-hostname work2
[root@localhost ~]# bash
[root@work2 ~]#

  • 配置主机映射

三台主机修改配置文件/etc/hosts
末行新增

192.168.126.6 ansible
192.168.126.7 work1
192.168.126.8 work2
 

 

测试一下ping主机名

[root@ansible ~]# ping -w1 work1;ping -w1 work2
PING work1 (192.168.126.7) 56(84) bytes of data.
64 bytes from work1 (192.168.126.7): icmp_seq=1 ttl=64 time=0.370 ms

--- work1 ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 0.370/0.370/0.370/0.000 ms
PING work2 (192.168.126.8) 56(84) bytes of data.
64 bytes from work2 (192.168.126.8): icmp_seq=1 ttl=64 time=0.438 ms

--- work2 ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 0.438/0.438/0.438/0.000 ms
 

  • 关闭防火墙、SELINUX

三台主机进行如下操作

关闭、禁用防火墙

systemctl stop firewalld
systemctl disable firewalld
 

关闭SELINUX

sed -i "s/SELINUX=.*/SELINUX=disabled/g" /etc/selinux/config
 

重启

reboot

2、拉取网络yum源

三台主机执行
yum install wget -y
wget -O /etc/yum.repos.d/epel.repo https://mirrors.aliyun.com/repo/epel-7.repo
wget -O /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo

3、安装ansible工具

ansible主机执行
[root@ansible ~]# yum install -y epel-release
[root@ansible ~]# yum install -y ansible

完成安装后,终端输入ansible加tab按键会生成以下内容(表明安装成功)

0e0be2784fe44d6fac7b8d5ad34e6c94.png

4、配置文件

为大家先介绍一下ansible的配置文件

Ansible的配置文件是一个可选文件,通常被称为ansible.cfg。它用于配置Ansible的行为和设置一些全局选项。

配置文件的默认位置是在当前用户的家目录下的ansible.cfg文件中。如果没有该文件,则使用默认值进行配置。

以下是一些常用的配置选项:

  1. [defaults]部分:此部分包含了一些全局的默认选项,如SSH用户名、远程主机的超时时间、执行任务时的并发数等。可以在此部分设置全局的默认值。

  2. hostfile和inventory:可以在配置文件中指定Ansible的主机清单文件的位置。主机清单文件用于定义要管理的远程主机列表,可以包括主机的IP地址或主机名,以及连接主机所需的用户名、密码或SSH秘钥等信息。

  3. remote_user:指定远程主机的连接用户名。

  4. ansible_ssh_private_key_file:指定SSH秘钥文件的路径。

  5. roles_path:指定Ansible角色的路径,角色是一种组织和复用任务的机制。

  6. log_path:指定Ansible日志文件的路径。

  7. ansible_python_interpreter:用于指定远程主机上Python解释器的路径。

配置文件中的配置选项可以根据需要自定义和修改,以满足具体的需求。

除了ansible.cfg文件外,Ansible还可以使用环境变量和命令行选项来配置和覆盖一些选项。例如,可以使用ANSIBLE_CONFIG环境变量指定配置文件的位置,或者使用--private-key命令行选项指定SSH秘钥文件的路径。

总之,Ansible的配置文件可以用于配置Ansible的行为和设置全局选项,以便更好地适应特定的应用场景和需求。

 

a00be9adc58f4c0a8fc8fc249bc13650.png

所以说主配置文件是可以自己去创建的,如果大家想自己创建的话这里给大家做一个简单的配置

 

主配置文件演示

8ca949757f3940869af8887ce2a1df86.png

 

主机清单文件演示

iventory主机清单文件,将被管理端主机写入一个主机列表文件(主机清单)

c46ef002211945bc91e1ff77fcf5bdad.png

这里还有嵌套组的定义,以后等有机会再发,现在大家先简单的体验了解一下吧

 

上面是自己创建的配置文件,那咱就不去创建了,省事哈!主打的就是能白嫖的东西咱就是用就对了,直接进入正题,开整!!!

 

本篇这里我全部使用默认的配置文件

这里默认的主配置文件在/etc/ansible/ansible.cfg,默认的主机清单文件在/etc/ansible/hosts
因为一切都是默认的,现在只要修改一下主机清单文件,将被管理端主机写入主机清单文件

[root@ansible ~]# vi /etc/ansible/hosts
末行添加
[web]
work1 ansible_host=192.168.126.7
work2 ansible_host=192.168.126.8

5、配置免密认证(SSH密钥认证)

确保管理设备能够通过SSH连接到WEB1和WEB2。

这里配置免密认证有两种方式

1)、使用SSH密钥认证

2)、使用密码进行认证

请注意,使用SSH密钥认证比密码认证更安全。如果可能的话,请使用SSH密钥认证来确保更好的安全性。

哪个安全哪个来,这里我使用SSH密钥认证,我认为密钥认证也更简单

#在管理设备上生成SSH密钥对

[root@ansible ~]# ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa):
Created directory '/root/.ssh'.
Enter passphrase (empty for no passphrase):   #回车
Enter same passphrase again:    #回车
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:     #回车
SHA256:qRdZeqor2hRP3Il9otVFYC9jeOA5cdUBuBN2839B56E root@ansible
The key's randomart image is:
+---[RSA 2048]----+
|        o +++o.. |
|       . B+oo .o.|
|        =.*+ooo.o|
|     . + @o+ E...|
|    . + S +.   ..|
|     + + *      o|
|    . + o       .|
|   o.  o         |
|  ....o.         |
+----[SHA256]-----+

 

#将公钥复制到work1和work2上
[root@ansible ~]# ssh-copy-id root@192.168.126.7
/usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/root/.ssh/id_rsa.pub"
The authenticity of host '192.168.126.7 (192.168.126.7)' can't be established.
ECDSA key fingerprint is SHA256:Eo6o1Vh11jZQuNaYh3vnnk9DVYw1wbaQTyhUNw/n4Tk.
ECDSA key fingerprint is MD5:80:dc:70:50:9d:b4:be:00:1b:41:ef:35:8a:d7:18:81.
Are you sure you want to continue connecting (yes/no)? yes    #输入yes
/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
/usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys
root@192.168.126.7's password:        #输入密码

Number of key(s) added: 1

Now try logging into the machine, with:   "ssh 'root@192.168.126.7'"
and check to make sure that only the key(s) you wanted were added.

 

[root@ansible ~]# ssh-copy-id root@192.168.126.8
/usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/root/.ssh/id_rsa.pub"
The authenticity of host '192.168.126.8 (192.168.126.8)' can't be established.
ECDSA key fingerprint is SHA256:T/Ypp3Ak0KxHLJMF2Mqca32bOi+IN8vGOI1UongMpdw.
ECDSA key fingerprint is MD5:ba:21:1c:c0:1e:6c:01:5f:38:33:f7:e6:94:a1:91:e0.
Are you sure you want to continue connecting (yes/no)? yes         #输入yes
/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
/usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys
root@192.168.126.8's password:         #输入密码

Number of key(s) added: 1

Now try logging into the machine, with:   "ssh 'root@192.168.126.8'"
and check to make sure that only the key(s) you wanted were added.

 

#命令测试连接(这里可以看到我们用ssh已经不需要密码了)

[root@ansible ~]# ssh work1
Last login: Mon May 27 18:08:52 2024 from ansible
[root@work1 ~]# exit
logout
Connection to work1 closed.
[root@ansible ~]# ssh work2
Last login: Mon May 27 18:09:24 2024 from ansible
[root@work2 ~]# exit
logout
Connection to work2 closed.
 

 

 

Ansible使用

现在我们的配置基本完成,让我们简单的来使用一下ansible命令

ansible命令基本语法

Ansible命令的基本语法如下:

ansible [options] <host-pattern> [-m module_name] [-a 'module_arguments']

 

其中,

  • ansible:表示运行ansible命令。
  • [options]:用于指定一些额外的选项,可以控制Ansible的行为和输出。
  • &lt;host-pattern>:表示要操作的远程主机的模式。可以是一个具体的主机名、IP地址,也可以是一个主机清单中定义的组名或模式。
  • [-m module_name]:表示要执行的模块名。模块是Ansible执行的基本单元,用于执行特定的任务。
  • [-a 'module_arguments']:表示要传递给模块的参数。每个模块都有不同的参数要求,需要根据具体模块的文档来传递正确的参数。

除了上述基本语法,还有一些常用的ansible命令选项,如:

  • -u, --user &lt;remote_user>:指定远程主机的连接用户名。
  • -i, --inventory-file &lt;inventory_file>:指定主机清单文件的位置。
  • -k, --ask-pass:提示输入SSH密码。
  • -b, --become:使用特权(sudo)执行任务。
  • -K, --ask-become-pass:提示输入特权(sudo)密码。
  • -C, --check:只检查远程主机的状态,不执行真正的操作。
  • -l, --limit &lt;pattern>:限制仅对符合模式的主机执行命令。

上述语法和选项只是ansible命令的基本用法,实际使用中还有更多高级的选项和用法,可以参考Ansible的官方文档或使用ansible --help命令获取更多信息。

Ansible模块是用于执行特定任务的可重用代码块。模块可以在Ansible控制节点上执行,或者通过SSH远程到远程主机上执行。它们负责将系统从一个已知状态转换到期望的状态。

 

ansible模块

Ansible模块可以分为以下几类:

  1. 命令模块(command modules):用于在远程主机上执行命令,如commandshellraw等模块。
  2. 系统模块(system modules):用于管理系统配置和状态,如usergroupservicepackage等模块。
  3. 文件模块(file modules):用于管理文件和目录,如copyfiletemplate等模块。
  4. 网络模块(network modules):用于管理网络设备配置,如ios_commandnxos_commandasa_command等模块。
  5. 云模块(cloud modules):用于管理云平台资源,如ec2gcpazure_rm等模块。
  6. 数据库模块(database modules):用于与数据库交互,如mysql_dbpostgresql_db等模块。
  7. Web模块(web modules):用于与Web服务器交互,如uriget_urls3等模块。

这仅仅是Ansible模块的一小部分示例,实际上还有很多其他模块可用,每个模块都有不同的功能和参数选项。可以使用ansible-doc -l显示所有模块,ansible-doc <module_name>命令来查看特定模块的文档,或者访问Ansible官方文档网站:https://docs.ansible.com/ 来获取更多关于模块的信息。

大家可以自己去了解ansible模块,毕竟有上千个,博大精深呢,让我全部写是不现实滴!

正是学习Asible模块之前,对于初学者来说,有必要先了解ansible-doc用法

Ansible执行后根据结果会显示为绿色表示执行成功,黄色表示成功且状态改变,红色表示命令执行失败等颜色,颜色的显示与changed的状态相关联,并可以在ansible.cfg中进行定制颜色的设定。大家可以关注一下执行结果的颜色!

 

ansible模块的使用

接下来展示一下模块的使用

ping模块

#ping模块的使用,主机组web执行该命令

[root@ansible ~]# ansible web -m ping
work2 | SUCCESS => {
    "ansible_facts": {
        "discovered_interpreter_python": "/usr/bin/python"
    },
    "changed": false,
    "ping": "pong"
}
work1 | SUCCESS => {
    "ansible_facts": {
        "discovered_interpreter_python": "/usr/bin/python"
    },
    "changed": false,
    "ping": "pong"
}

 

shell模块

#shell万能模块

#执行"uname -a"命令是用于在Linux系统中获取当前操作系统的详细信息,包括内核版本、主机名、操作系统版本、硬件架构等,主机组web执行该命令

[root@ansible ~]# ansible web -m shell -a "uname -a"
work2 | CHANGED | rc=0 >>
Linux work2 3.10.0-1160.el7.x86_64 #1 SMP Mon Oct 19 16:18:59 UTC 2020 x86_64 x86_64 x86_64 GNU/Linux
work1 | CHANGED | rc=0 >>
Linux work1 3.10.0-1160.el7.x86_64 #1 SMP Mon Oct 19 16:18:59 UTC 2020 x86_64 x86_64 x86_64 GNU/Linux

 

#当然这个web也可以使用all来代替代表所有的被管理的主机执行命令

#主机work1执行该命令

[root@ansible ~]# ansible work1 -m shell -a  'cat /etc/passwd | grep "sshd"'
work1 | CHANGED | rc=0 >>
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
 

command模块 

#command基础模块,它不支持”<”, “>”, “|”, “;” 和 “&” 这些符号等,主机组web执行该命令,这里chdir进入到该目录执行命令

[root@ansible ~]# ansible web -m command -a 'chdir=/root ls'
work2 | CHANGED | rc=0 >>
anaconda-ks.cfg
work1 | CHANGED | rc=0 >>
anaconda-ks.cfg

#主机组web执行该命令

[root@ansible ~]# ansible web -m command -a 'echo Hello Ansible!'
work2 | CHANGED | rc=0 >>
Hello Ansible!
work1 | CHANGED | rc=0 >>
Hello Ansible!
 

copy模块 

#copy模块,主机work2执行该命令,该指令src表示指定源路径   dest表示目的路径  mode表示文件权限赋予

[root@ansible ~]# ansible work2 -m copy -a 'src=/etc/yum.repos.d/epel.repo dest=/root/ mode=666'
work2 | CHANGED => {
    "ansible_facts": {
        "discovered_interpreter_python": "/usr/bin/python"
    },
    "changed": true,
    "checksum": "2feedd589b72617f03d75c4b8a6e328cc1aad918",
    "dest": "/root/epel.repo",
    "gid": 0,
    "group": "root",
    "md5sum": "bddf35db56cf6be9190fdabeae71c801",
    "mode": "0666",
    "owner": "root",
    "size": 664,
    "src": "/root/.ansible/tmp/ansible-tmp-1716812057.84-17328-262103386599201/source",
    "state": "file",
    "uid": 0
}

 

#我们可以用命令查看一下上面的copy模块命令是否执行成功

[root@ansible ~]# ansible work2 -m shell -a 'ls /root'
work2 | CHANGED | rc=0 >>
anaconda-ks.cfg
epel.repo

 

我们用shell模块来查看work2主机的/root目录下面是否有这个复制文件,发现是有的,复制成功,大家记住shell模块真的是万能的,也是最笨的,要是大家想执行一个命令是想不到模块命令,可以使用shell模块,但是还是建议大家自己多去查,多去用其他模块,毕竟我们是在学知识。

user模块

user模块,主机work1执行该命令,创建用户student,设为系统用户,所属root组,uid为2024

[root@ansible ~]# ansible work1 -m user -a 'name=student system=yes group=root uid=2024'
work1 | CHANGED => {
    "ansible_facts": {
        "discovered_interpreter_python": "/usr/bin/python"
    },
    "changed": true,
    "comment": "",
    "create_home": true,
    "group": 0,
    "home": "/home/student",
    "name": "student",
    "shell": "/bin/bash",
    "state": "present",
    "system": true,
    "uid": 2024
}

 

#用shell模块查看一下,用户student是创建成功的
[root@ansible ~]# ansible work1 -m shell -a 'tail -n 5 /etc/passwd'
work1 | CHANGED | rc=0 >>
abrt:x:173:173::/etc/abrt:/sbin/nologin
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
postfix:x:89:89::/var/spool/postfix:/sbin/nologin
apache:x:48:48:Apache:/usr/share/httpd:/sbin/nologin
student:x:2024:0::/home/student:/bin/bash
 

file模块

#file模块,主机work2执行该命令,将epel.repo文件修改所有者为root,权限为777,所属组为root

[root@ansible ~]# ansible work2 -m file -a 'path=/root/epel.repo owner=root mode=0777 group=root'
work2 | CHANGED => {
    "ansible_facts": {
        "discovered_interpreter_python": "/usr/bin/python"
    },
    "changed": true,
    "gid": 0,
    "group": "root",
    "mode": "0777",
    "owner": "root",
    "path": "/root/epel.repo",
    "size": 664,
    "state": "file",
    "uid": 0
}
 

#使用shell查看文件的信息

[root@ansible ~]# ansible work2 -m command -a 'ls -l  epel.repo'
work2 | CHANGED | rc=0 >>
-rwxrwxrwx 1 root root 664 May 27 20:14 epel.repo
 

yum模块

#yum模块,主机work1执行该命令,安装Apache服务

[root@ansible ~]# ansible work1 -m yum -a 'name=httpd state=latest'
work1 | CHANGED => {
    "ansible_facts": {
        "discovered_interpreter_python": "/usr/bin/python"
    },
    "changed": true,
    "changes": {
        "installed": [
            "httpd"
        ],
        "updated": []
    },
    "msg": "",
    "rc": 0,
    "results": [
        "Loaded plugins: fastestmirror\nLoading mirror speeds from cached hostfile\n * base: mirrors.aliyun.com\n * extras: mirrors.aliyun.com\n * updates: mirrors.aliyun.com\nResolving Dependencies\n--> Running transaction check\n---> Package httpd.x86_64 0:2.4.6-99.el7.centos.1 will be installed\n--> Processing Dependency: httpd-tools = 2.4.6-99.el7.centos.1 for package: httpd-2.4.6-99.el7.centos.1.x86_64\n--> Processing Dependency: /etc/mime.types for package: httpd-2.4.6-99.el7.centos.1.x86_64\n--> Running transaction check\n---> Package httpd-tools.x86_64 0:2.4.6-99.el7.centos.1 will be installed\n---> Package mailcap.noarch 0:2.1.41-2.el7 will be installed\n--> Finished Dependency Resolution\n\nDependencies Resolved\n\n================================================================================\n Package           Arch         Version                     Repository     Size\n================================================================================\nInstalling:\n httpd             x86_64       2.4.6-99.el7.centos.1       updates       2.7 M\nInstalling for dependencies:\n httpd-tools       x86_64       2.4.6-99.el7.centos.1       updates        94 k\n mailcap           noarch       2.1.41-2.el7                base           31 k\n\nTransaction Summary\n================================================================================\nInstall  1 Package (+2 Dependent packages)\n\nTotal download size: 2.8 M\nInstalled size: 9.6 M\nDownloading packages:\n--------------------------------------------------------------------------------\nTotal                                              2.0 MB/s | 2.8 MB  00:01     \nRunning transaction check\nRunning transaction test\nTransaction test succeeded\nRunning transaction\n  Installing : httpd-tools-2.4.6-99.el7.centos.1.x86_64                     1/3 \n  Installing : mailcap-2.1.41-2.el7.noarch                                  2/3 \n  Installing : httpd-2.4.6-99.el7.centos.1.x86_64                           3/3 \n  Verifying  : httpd-2.4.6-99.el7.centos.1.x86_64                           1/3 \n  Verifying  : mailcap-2.1.41-2.el7.noarch                                  2/3 \n  Verifying  : httpd-tools-2.4.6-99.el7.centos.1.x86_64                     3/3 \n\nInstalled:\n  httpd.x86_64 0:2.4.6-99.el7.centos.1                                          \n\nDependency Installed:\n  httpd-tools.x86_64 0:2.4.6-99.el7.centos.1    mailcap.noarch 0:2.1.41-2.el7   \n\nComplete!\n"
    ]
}
 

service模块

#service模块,主机work1执行该命令,启动Apache服务

[root@ansible ~]# ansible work1 -m service -a 'name=httpd state=started'
work1 | CHANGED => {
    "ansible_facts": {
        "discovered_interpreter_python": "/usr/bin/python"
    },
    "changed": true,
    "name": "httpd",
    "state": "started",
    "status": {  太长了,不复制了}
 

我们可以用浏览器访问一下

add2654c7c0d420dab4b7d49cb0f1b9b.png

可以发现是可以正常访问的,说明使用service模块是开启成功!

ansible的介绍、安装、使用就先聊到这里,大家在使用模块方面可以去学习更多的模块,后续将更进一些关于playbook和role的相关知识,以及其它方式安装ansible。

 

ansible巧手一练

下面给大家出一点相关的题目,方便大家自己去练习,大家可以把答案打在评论区

1、使用copy模块来将/opt/csdn.txt复制到/home/csdn中。

2、使用yum模块,安装nginx服务,并使用service开启该服务并设置服务开机自启。

3、使用group模块,创建csdn组,并使用user模块创建csdn用户,让其为系统用户,所属组为csdn,uid为2025。

4、使用replace模块,将/etc/fstab中swap的所在行注释,完成关闭swap交换分区。

4、使用cron模块,定义一个任务,每周五的14点30分执行备份/var。

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值