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'
相关推荐
摸鱼也很难1 小时前
Docker 镜像加速和配置的分享 && 云服务器搭建beef-xss
运维·docker·容器
woshilys1 小时前
sql server 查询对象的修改时间
运维·数据库·sqlserver
疯狂飙车的蜗牛2 小时前
从零玩转CanMV-K230(4)-小核Linux驱动开发参考
linux·运维·驱动开发
恩爸编程3 小时前
探索 Nginx:Web 世界的幕后英雄
运维·nginx·nginx反向代理·nginx是什么·nginx静态资源服务器·nginx服务器·nginx解决哪些问题
Michaelwubo4 小时前
Docker dockerfile镜像编码 centos7
运维·docker·容器
好像是个likun4 小时前
使用docker拉取镜像很慢或者总是超时的问题
运维·docker·容器
cominglately7 小时前
centos单机部署seata
linux·运维·centos
CircleMouse7 小时前
Centos7, 使用yum工具,出现 Could not resolve host: mirrorlist.centos.org
linux·运维·服务器·centos
Karoku0668 小时前
【k8s集群应用】kubeadm1.20高可用部署(3master)
运维·docker·云原生·容器·kubernetes
木子Linux8 小时前
【Linux打怪升级记 | 问题01】安装Linux系统忘记设置时区怎么办?3个方法教你回到东八区
linux·运维·服务器·centos·云计算