Ansible初识

ansible初识

Ansible是一种自动化工具,用于配置管理、应用程序部署和任务自动化。它基于Python语言开发,使用SSH协议进行通信,并且不需要在被管理的主机上安装任何客户端。Ansible使用简单的YAML语言来描述任务和配置,使得操作简单、易于理解。

Ansible的主要特点包括:

  1. 简单易用:Ansible使用YAML语言来定义任务和配置,具有简单、直观的语法,使得操作起来非常容易。同时,Ansible提供了丰富的模块和插件,可以方便地完成各种任务。

  2. 基于SSH协议:Ansible使用SSH协议进行通信,不需要在被管理的主机上安装任何客户端。这意味着可以更好地保护系统安全,同时也降低了管理工作的复杂度。

  3. 基于代理:Ansible可以通过代理服务器来管理无法直接访问的主机,如跳板机、防火墙后的主机等。这样可以实现对整个网络的统一管理,提高了灵活性和可扩展性。

  4. 基于模块化:Ansible提供了丰富的模块和插件,可以用于完成各种任务,如安装软件、配置系统、部署应用程序等。同时,Ansible允许用户编写自定义模块和插件,满足特定需求。

  5. 可扩展性:Ansible支持多主机和多组主机管理,可以轻松应对大规模环境。同时,Ansible还支持分布式部署和高可用性配置,提供了高效的管理解决方案。

总之,Ansible是一种功能强大、易于使用的自动化工具,适用于各种场景,可以简化管理工作,提高效率。无论是小规模还是大规模环境,Ansible都可以帮助您轻松管理和部署系统。

ansible命令

以下是一些常见的ansible命令:

  1. ansible <host-pattern> -m <module>:运行ansible模块在指定的主机上。

  2. ansible-playbook <playbook.yml>:运行ansible playbook。

  3. ansible <host-pattern> --list-hosts:列出匹配主机模式的主机。

  4. ansible <host-pattern> --inventory-file=<inventory-file>:指定使用的清单文件。

  5. ansible <host-pattern> -a <command>:在远程主机上运行命令。

  6. ansible <host-pattern> -e <extra-vars>:传递额外的变量给playbook或命令。

  7. ansible <host-pattern> --limit=<limit>:限制适用的主机数量。

  8. ansible <host-pattern> --tags=<tags>:只运行指定的标签。

  9. ansible <host-pattern> --skip-tags=<tags>:跳过指定的标签。

  10. ansible <host-pattern> --start-at-task=<task-name>:从指定的任务开始运行。

  11. ansible <host-pattern> --check:进行干运行,检查可能对主机造成的变化。

  12. ansible <host-pattern> --diff:在执行任务之前显示文件的差异。

  13. ansible <host-pattern> --become:使用sudo或类似特权升级。

  14. ansible <host-pattern> --become-user=<user>:以指定的用户身份运行命令。

  15. ansible-doc <module>:查看模块的文档。

ansible 模块

Ansible是一个自动化的IT操作工具,它可以通过使用模块来实现各种不同的任务。以下是一些常用的Ansible模块:

  1. command模块:用于在远程主机上执行命令。
  2. copy模块:用于在远程主机上复制文件和目录。
  3. file模块:用于在远程主机上管理文件和目录的属性。
  4. template模块:用于在远程主机上使用模板生成文件。
  5. apt/yum模块:用于在远程主机上执行软件包管理器(APT或Yum)的操作。
  6. service模块:用于在远程主机上管理系统服务的状态。
  7. user模块:用于在远程主机上管理用户和用户组。
  8. shell模块:用于在远程主机上执行Shell脚本。
  9. git模块:用于在远程主机上执行Git操作。
  10. docker_compose模块:用于在远程主机上管理Docker容器的状态和操作。

以上只是一些常见的Ansible模块,Ansible还提供了许多其他模块来满足不同的需求。您可以通过查看Ansible的官方文档来了解更多关于模块的信息。Ansible是一个自动化的IT操作工具,它可以通过使用模块来实现各种不同的任务。以下是一些常用的Ansible模块:

  1. command模块:用于在远程主机上执行命令。
  2. copy模块:用于在远程主机上复制文件和目录。
  3. file模块:用于在远程主机上管理文件和目录的属性。
  4. template模块:用于在远程主机上使用模板生成文件。
  5. apt/yum模块:用于在远程主机上执行软件包管理器(APT或Yum)的操作。
  6. service模块:用于在远程主机上管理系统服务的状态。
  7. user模块:用于在远程主机上管理用户和用户组。
  8. shell模块:用于在远程主机上执行Shell脚本。
  9. git模块:用于在远程主机上执行Git操作。
  10. docker_compose模块:用于在远程主机上管理Docker容器的状态和操作。

Ansible的synchronize模块

Ansible的synchronize模块是用于在远程主机之间进行数据同步的模块。它使用rsync算法来高效地复制文件和目录。

synchronize模块的使用方法如下:

yaml 复制代码
- name: Synchronize files
  synchronize:
    src: /path/to/source
    dest: /path/to/destination
    mode: push  # 可选。默认为`push`。指定同步方向为推送(push)或拉取(pull)。
    delete: yes  # 可选。默认为`no`。指定是否删除目标目录中不存在于源目录中的文件。
    recursive: yes  # 可选。默认为`yes`。指定是否递归复制目录。
    archive: yes  # 可选。默认为`yes`。指定是否启用归档模式(copy所有文件属性)。
    compress: yes  # 可选。默认为`no`。指定是否启用压缩。

详细解释如下:

  • src: 源文件或目录的路径。
  • dest: 目标文件或目录的路径。
  • mode: 同步方向。可选值为push(推送)或pull(拉取)。默认为push,即将源文件复制到目标主机。
  • delete: 指定是否删除目标目录中不存在于源目录中的文件。可选值为yesno。默认为no,即不删除。
  • recursive: 指定是否递归复制目录。可选值为yesno。默认为yes,即递归复制。
  • archive: 指定是否启用归档模式,即复制文件时保留所有文件属性。可选值为yesno。默认为yes,即启用。
  • compress: 指定是否启用压缩。可选值为yesno。默认为no,即不启用。

使用synchronize模块进行文件同步的示例:

yaml 复制代码
- name: Synchronize files
  synchronize:
    src: /path/to/source
    dest: /path/to/destination
    mode: push
    delete: yes
    recursive: yes
    archive: yes
    compress: yes

上面的任务将源目录/path/to/source中的文件,同步到目标主机的/path/to/destination目录中,同时删除目标目录中不存在于源目录中的文件。复制过程中会保留所有文件属性,并启用压缩以提高传输效率。

"fetch"模块从目标主机上获取文件

在Ansible中,可以使用"fetch"模块从目标主机上获取文件。fetch模块将目标主机上的文件复制到控制主机上。

以下是fetch模块的用法示例:

yaml 复制代码
- name: Fetch a file from remote hosts
  hosts: your_hosts
  tasks:
    - name: Fetch a file
      fetch:
        src: /path/to/remote/file
        dest: /path/to/local/directory

在上面的示例中,我们指定了要从远程主机获取的文件的路径src,以及要将文件复制到的本地目录dest

请注意,fetch模块在每个目标主机上执行,因此它必须在一个包含目标主机的playbook中使用。

1、4台虚拟机,1台作为主控端,3台被控端,虚拟机1使用ansible对被控端服务器进行ping测试

192.168.99.130

bash 复制代码
yum install ansible

编辑/etc/hosts

conf 复制代码
192.168.99.132 h1
192.168.99.144 h2
192.168.99.118 h3

/etc/ansible/hosts 添加

bash 复制代码
h1
h2
h3
bash 复制代码
ssh-keygen -t rsa
ssh-copy-id root@192.168.99.132
ssh-copy-id root@192.168.99.144
ssh-copy-id root@192.168.99.118
bash 复制代码
ansible h1,h2,h3 -m ping  

2、将2、3分为一组A,4单独分为一组B进行ping测试

puppet 复制代码
[A]
h1
h2
[B]
h3
bash 复制代码
ansible A,B -m ping   

3、有一个大组包含了组A和B的所有主机,进行ping测试

bash 复制代码
[A]
h1
h2
[B]
h3
[gr1:children]
A
B
bash 复制代码
ansible gr1 -m ping  

4、在234三台机的tmp目录下创建一个文件

bash 复制代码
ansible gr1 -m command -a 'touch /tmp/test'  

5、修改所有主机的yum源为aliyun源

bash 复制代码
ansible gr1 -m yum_repository -a 'name=base baseurl=http://mirrors.aliyun.com/centos/7/os/x86_64/ description=ali_repo gpgcheck=no enabled=yes state=present'
ansible gr1 -m yum_repository -a 'name=epel baseurl=https://mirrors.aliyun.com/epel/7/x86_64/ enabled=yes gpgcheck=no gpgcakey=https://mirrors.aliyun.com/epel/RPM-GPG-KEY-EPEL-7 description=epel_repo state=present file=AlicloudEpel'


6、远程安装httpd、nginx、ntpdate

bash 复制代码
ansible  gr1 -m yum -a 'name=httpd,nginx,ntpdate'
相关推荐
yongui478341 小时前
CentOS系统如何查看当前内存容量
linux·运维·centos
xzq_java1 小时前
CentOS操作系统虚拟机安装以及连接工具下载和远程连接工具远程连接
linux·运维·centos
Sweety丶╮7942 小时前
【Ansible】实施 Ansible Playbook知识点
服务器·云原生·ansible
ZLRRLZ2 小时前
【Docker】Docker安装
运维·docker·容器
逐梦吧!旅行者2 小时前
Linux之环境变量(内容由浅入深,层层递进)
linux·运维
挨踢攻城3 小时前
Linux 应急响应实操 Checklist
linux·运维·linux命令·rhce·rhca·厦门微思网络·linux 应急响应
wanhengidc3 小时前
什么是云手机?
运维·网络·安全·游戏·智能手机
optiz3 小时前
细菌基因组genome二代测序数据分析
linux·运维·服务器
IT成长日记4 小时前
【Linux基础】Linux系统管理:GPT分区实践详细操作指南
linux·运维·服务器·gpt·parted·磁盘分区·fdisk
爱喝水的鱼丶4 小时前
SAP-ABAP: ABAP ASSIGN COMPONENT 语句详解:动态字段符号的利器作用用法示例详解
运维·开发语言·sap·abap·开发经验·动态字段符号