>시스템 튜토리얼 >리눅스 >Ansible의 공통 모듈에 대한 간략한 소개

Ansible의 공통 모듈에 대한 간략한 소개

WBOY
WBOY원래의
2024-09-02 13:36:00525검색

Ansible의 공통 모듈에 대한 간략한 소개

이 글에서는 일반적으로 사용되는 모듈을 소개합니다. 공식 분류에 따르면 모듈은 기능별로 클라우드 모듈, 명령 모듈, 데이터베이스 모듈, 파일 모듈, 자산 모듈, 메시지 모듈, 모니터링 모듈, 네트워크 모듈, 알림 모듈, 패키지 관리 모듈, 소스 코드 제어 모듈, 시스템 모듈, 유닛 모듈, 웹 시설 모듈, 윈도우 모듈 등 자세한 사항은 공식 페이지를 참고해주세요.

여기에서는 소개를 위해 공식 카테고리에서 가장 일반적으로 사용되는 모듈 중 일부를 선택합니다(명령 모듈은 이전 기사에서 소개되었으므로 여기서는 언급하지 않습니다).

1. 핑 모듈

호스트가 연결되어 있는지 테스트합니다. 사용법은 매우 간단하며 매개변수를 포함하지 않습니다.

으아악
2. 설정 모듈

설정 모듈은 주로 호스트 정보를 가져오는 데 사용됩니다. 플레이북에서 자주 사용되는 Gather_facts 매개변수가 이 모듈과 관련되어 있습니다. setup 모듈에서 자주 사용되는 매개변수는 필터 매개변수입니다. 구체적인 사용 예는 다음과 같습니다(출력 결과가 많기 때문에 여기에는 결과 없이 명령만 나열됩니다).

으아악
3. 파일 모듈

파일 모듈은 주로 원격 호스트에서 파일 작업에 사용됩니다. 파일 모듈에는 다음 옵션이 포함되어 있습니다.

  • force: 두 가지 상황에서 소프트 링크 생성을 강제해야 합니다. 하나는 소스 파일이 없지만 나중에 생성될 때이고, 다른 하나는 대상 소프트 링크가 이미 존재하는 경우입니다. 이전 소프트 링크를 먼저 만든 다음 새 소프트 링크를 만듭니다. 두 가지 옵션이 있습니다: 예|아니요
  • 그룹: 파일/디렉토리의 그룹을 정의합니다.
  • 모드: 파일/디렉토리의 권한을 정의합니다
  • 소유자: 파일/디렉토리의 소유자를 정의합니다
  • 경로: 필수 옵션, 파일/디렉토리의 경로를 정의합니다
  • recurse: 파일 속성을 재귀적으로 설정하며 디렉터리에만 유효합니다
  • src: 링크할 소스 파일의 경로, state=link인 경우에만 적용됩니다
  • dest: 링크할 경로, state=link인 경우에만 적용됩니다
  • 상태: 디렉터리: 디렉터리가 존재하지 않으면 디렉터리를 만듭니다.
    파일 : 파일이 없어도 생성되지 않습니다
    링크: 소프트 링크 만들기
    hard: 하드 링크 만들기
    touch: 파일이 없으면 새 파일이 생성됩니다. 파일이나 디렉터리가 이미 있으면 마지막 수정 시간이 업데이트됩니다.
    없음: 디렉터리, 파일 삭제 또는 파일 연결 해제

사용 예:

으아악
4. 모듈 복사

원격 호스트에 파일을 복사합니다. 복사 모듈에는 다음 옵션이 포함되어 있습니다.

  • 백업: 덮어쓰기 전 원본 파일을 백업하세요. 백업 파일에는 시간 정보가 포함되어 있습니다. 두 가지 옵션이 있습니다: 예|아니요
  • content: "src"를 대체하는데 사용되며, 지정한 파일의 값을 직접 설정할 수 있습니다
  • 대상: 필수입니다. 소스 파일을 복사할 원격 호스트의 절대 경로입니다. 소스 파일이 디렉터리인 경우 경로도 디렉터리여야 합니다.
  • directory_mode: 디렉토리의 권한을 반복적으로 설정하며 기본값은 시스템 기본 권한입니다
  • force: 대상 호스트에 파일이 포함되어 있지만 내용이 다른 경우 yes로 설정하면 강제로 덮어쓰고, no로 설정하면 파일이 대상 위치에 없는 경우에만 복사됩니다. 대상 호스트. 기본값은 예입니다
  • 기타: 파일 모듈의 모든 옵션을 여기에서 사용할 수 있습니다
  • src: 원격 호스트에 복사할 파일의 로컬 주소입니다. 절대 경로 또는 상대 경로일 수 있습니다. 경로가 디렉터리이면 재귀적으로 복사됩니다. 이 경우 경로가 "/"로 끝나면 해당 디렉터리의 내용만 복사되며, "/"로 끝나지 않으면 rsync와 마찬가지로 해당 디렉터리를 포함한 전체 내용이 복사됩니다.
  • validate: 복사하기 전에 실행할 유효성 검사 명령입니다. 유효성을 검사할 파일의 경로는 아래 visudo 예시와 같이 있어야 하는 '%s'를 통해 전달됩니다.

예는 다음과 같습니다.

으아악
5. 서비스 모듈

用于管理服务
该模块包含如下选项:

arguments:给命令行提供一些选项

enabled:是否开机启动 yes|no

name:必选项,服务名称

pattern:定义一个模式,如果通过status指令来查看服务的状态时,没有响应,就会通过ps指令在进程中根据该模式进行查找,如果匹配到,则认为该服务依然在运行

runlevel:运行级别

sleep:如果执行了restarted,在则stop和start之间沉睡几秒钟

state:对当前服务执行启动,停止、重启、重新加载等操作(started,stopped,restarted,reloaded)

使用示例:

# Example action to reload service httpd, in all cases
- service: name=httpd state=reloaded
# Example action to enable service httpd, and not touch the running state
- service: name=httpd enabled=yes
# Example action to start service foo, based on running process /usr/bin/foo
- service: name=foo pattern=/usr/bin/foo state=started
# Example action to restart network service for interface eth0
- service: name=network state=restarted args=eth0
六、cron模块
  • 用于管理计划任务
    包含如下选项:
  • backup:对远程主机上的原任务计划内容修改之前做备份
  • cron_file:如果指定该选项,则用该文件替换远程主机上的cron.d目录下的用户的任务计划
  • day:日(1-31,*,*/2,……)
  • hour:小时(0-23,*,*/2,……)
  • minute:分钟(0-59,*,*/2,……)
  • month:月(1-12,*,*/2,……)
  • weekday:周(0-7,*,……)
  • job:要执行的任务,依赖于state=present
  • name:该任务的描述
  • special_time:指定什么时候执行,参数:reboot,yearly,annually,monthly,weekly,daily,hourly
  • state:确认该任务计划是创建还是删除
  • user:以哪个用户的身份执行

示例:

ansible test -m cron -a 'name="a job for reboot" special_time=reboot job="/some/job.sh"'
ansible test -m cron -a 'name="yum autoupdate" weekday="2" minute=0 hour=12 user="root
ansible 10.212.52.252 -m cron -a 'backup="True" name="test" minute="0" hour="2" job="ls -alh > /dev/null"'
ansilbe test -m cron -a 'cron_file=ansible_yum-autoupdate state=absent'
七、yum模块

使用yum包管理器来管理软件包,其选项有:

  • config_file:yum的配置文件
  • disable_gpg_check:关闭gpg_check
  • disablerepo:不启用某个源
  • enablerepo:启用某个源
  • name:要进行操作的软件包的名字,也可以传递一个url或者一个本地的rpm包的路径
  • state:状态(present,absent,latest)

示例如下:

ansible test -m yum -a 'name=httpd state=latest'
ansible test -m yum -a 'name="@Development tools" state=present'
ansible test -m yum -a 'name=http://nginx.org/packages/centos/6/noarch/RPMS/
nginx-release-centos-6-0.el6.ngx.noarch.rpm state=present'
八、user模块与group模块

user模块是请求的是useradd, userdel, usermod三个指令,goup模块请求的是groupadd, groupdel, groupmod 三个指令,具体参数这里不再细讲,直接上示例。
1、user模块示例:

- user: name=johnd comment="John Doe" uid=1040 group=admin
- user: name=james shell=/bin/bash groups=admins,developers append=yes
- user: name=johnd state=absent remove=yes
- user: name=james18 shell=/bin/zsh groups=developers expires=1422403387
#生成密钥时,只会生成公钥文件和私钥文件,和直接使用ssh-keygen指令效果相同,不会生成authorized_keys文件。
- user: name=test generate_ssh_key=yes ssh_key_bits=2048 ssh_key_file=.ssh/id_rsa

注:指定password参数时,不能使用后面这一串密码会被直接传送到被管理主机的/etc/shadow文件中,所以需要先将密码字符串进行加密处理。然后将得到的字符串放到password中即可。

[root@361way ~]# openssl passwd -1 -salt $(
<p>不同的发行版默认使用的加密方式可能会有区别,具体可以查看/etc/login.defs文件确认,centos 6.5版本使用的是SHA512加密算法,生成密码可以通过ansible官方给出的示例:</p>
<pre class="brush:php;toolbar:false">python -c "from passlib.hash import sha512_crypt; import getpass; print sha512_crypt.encrypt
(getpass.getpass())"

2、group示例

- group: name=somegroup state=present
九、synchronize模块

使用rsync同步文件,其参数如下:

  • archive: 归档,相当于同时开启recursive(递归)、links、perms、times、owner、group、-D选项都为yes ,默认该项为开启
  • checksum: 跳过检测sum值,默认关闭
  • compress:是否开启压缩
  • copy_links:复制链接文件,默认为no ,注意后面还有一个links参数
  • delete: 删除不存在的文件,默认no
  • dest:目录路径
  • dest_port:默认目录主机上的端口 ,默认是22,走的ssh协议
  • dirs:传速目录不进行递归,默认为no,即进行目录递归
  • rsync_opts:rsync参数部分
  • set_remote_user:主要用于/etc/ansible/hosts中定义或默认使用的用户与rsync使用的用户不同的情况
  • mode: push或pull 模块,push模的话,一般用于从本机向远程主机上传文件,pull 模式用于从远程主机上取文件

另外还有其他参数,这里不再一一说明。上几个用法:

src=some/relative/path dest=/some/absolute/path rsync_path="sudo rsync"
src=some/relative/path dest=/some/absolute/path archive=no links=yes
src=some/relative/path dest=/some/absolute/path checksum=yes times=no
src=/tmp/helloworld dest=/var/www/helloword rsync_opts=--no-motd,--exclude=.git mode=pull
十、mount模块
  • 配置挂载点
    选项:
  • dump
    fstype:必选项,挂载文件的类型
  • name:必选项,挂载点
  • opts:传递给mount命令的参数
  • src:必选项,要挂载的文件
  • state:必选项present:只处理fstab中的配置absent:删除挂载点mounted:自动创建挂载点并挂载之umounted:卸载

示例:

name=/mnt/dvd src=/dev/sr0 fstype=iso9660 opts=ro state=present
name=/srv/disk src='LABEL=SOME_LABEL' state=present
name=/home src='UUID=b3e48f45-f933-4c8e-a700-22a159ec9077' opts=noatime state=present
ansible test -a 'dd if=/dev/zero of=/disk.img bs=4k count=1024'
ansible test -a 'losetup /dev/loop0 /disk.img'
ansible test -m filesystem 'fstype=ext4 force=yes opts=-F dev=/dev/loop0'
ansible test -m mount 'name=/mnt src=/dev/loop0 fstype=ext4 state=mounted opts=rw'
十一、get_url 模块

该模块主要用于从http、ftp、https服务器上下载文件(类似于wget),主要有如下选项:

sha256sum:下载完成后进行sha256 check;

timeout:下载超时时间,默认10s

url:下载的URL

url_password、url_username:主要用于需要用户名密码进行验证的情况

use_proxy:是事使用代理,代理需事先在环境变更中定义

示例:

- name: download foo.conf
get_url: url=http://example.com/path/file.conf dest=/etc/foo.conf mode=0440
- name: download file with sha256 check
get_url: url=http://example.com/path/file.conf dest=/etc/foo.conf sha256sum=b5bb9d8014a0f9b1d61e21e796d78dccdf1352f23cd32812f4850b878ae4944c

模块部分就先介绍到这里吧,官方提供的可能用到模块有git、svn版本控制模块,sysctl 、authorized_key_module系统模块,apt、zypper、pip、gem包管理模块,find、template文件模块,mysql_db、redis数据库模块,url 网络模块等。具体可以参看官方手册模块部分

위 내용은 Ansible의 공통 모듈에 대한 간략한 소개의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.