ansible角色使用

钟逸 143 2024-02-25 21:09:19

Ansible安装配置和基本使用

一、ansible安装

ansible依赖于python2.6或更高的版本、paramiko、PyYAML及Jinja2。

将python头文件拷贝到标准目录,以避免编译ansible时,找不到所需的头文件

备份旧版本的python,并符号链接新版本的python

修改yum脚本,使其指向旧版本的python,已避免其无法运行

1.1编译安装

解决依赖关系

解压安装包

编译安装

拷贝配置文件

1.2 rpm包安装

使用阿里云镜像源即可,这里为了方便使用,就直接使用yum安装了。

Fedora用户可直接安装Ansible,但RHEL或CentOS用户,需要配置 EPEL# yum install-y epel-release# yum install-y ansible

注意:不同版本的ansible的功能差异可能较大。

二、配置

配置文件:/etc/ansible/ansible.cfg

hostfile=/etc/ansible/hosts#指定默认hosts配置的位置 host_key_checking= False#不进行host_key检查,省去目标key发生变化时输入(yes/no)的步骤 ask_pass=True#每次执行ansible命令是否询问ssh密码 ask_sudo_pass=True#每次执行ansible命令时是否询问sudo密码

主机清单:/etc/ansible/hosts

主程序:ansible、ansible paly-book、ansible-doc

1、将要管理的主机纳入/etc/ansible/hosts配置文件中,可以填写IP或是主机名

[WebServers] 10.10.10.3 10.10.10.4

2、.基于ssh的方式与被管理的主机进行通信,在管理的主机上(部署ansible的主机上)生成一对非对称密钥,将公钥发给被管理的主机。

a,生成密钥对:ssh-keygen-t rsa

b,将密钥发放到要管理的主机:ssh-copy-id-i 10.10.10.3或 ssh-copy-id-i/root/.ssh/id_rsa.pub root@10.10.10.3

3、使用ansible命令测试

[root@wlm yum.repos.d]# ansible all-m ping 10.10.10.4| SUCCESS=>{"changed": false,"ping":"pong"}

三、基本使用

1、常用命令

ansible-doc命令:获取模块列表、模块使用格式。

ansible-doc-l:获取列表

ansible-doc-s module_name:获取指定模块信息

2、ansible命令格式

ansible<host-pattern> [-f forks] [-m module_name] [-a args]

<host-pattern>指明管控主机,以模式表示或者直接指定ip,必须事先指定在文件中;all所有

[-f forks]指明每批管控多少主机,默认是5个主机一批次

[-m module_name]使用何种模块操作,所有操作都需要通过模块指定

[-a args]指明模块专用参数;args一般是 key=value格式。注:command模块的参数不是kv模式,而是直接给出要执行的命令。

注意:<host-pattern>默认读取/etc/ansible/hosts,也可以指明自定义文件路径-iPATH,--inventory=PATH:指明使用的 host inventory文件路径;

3、常用模块介绍

1、command模块:远程主机上运行命令

例:ansible hosts-m command-a"ls/tmp"注:command模块也可以省略。

给远程主机添加用户、设置密码:

ansible hosts-a'useradd user1'

ansible hosts-a'echo abc| passwd--stdin user1'

2、shell模块:远程主机在shell进程下运行命令,支持shell特性,也支持管道符。

10.10.10.4| SUCCESS| rc=0>>

3、copy模块:把当前主机文件复制到远程主机位置,可以指定mode、own、group

10.10.10.4| SUCCESS=>{"changed": true,"checksum":"325287cee456533bf76025312e5d05e842cb43a9","dest":"/root/abc.txt","gid": 0,"group":"root","md5sum":"1c6d47c6e4d59c630751b47fff140b89","mode":"0644","owner":"ansible","size": 15,"src":"/root/.ansible/tmp/ansible-tmp-1484639082.19-114656107854348/source","state":"file","uid": 0}

4、cron模块:在远程主机指定crontab周期性计划任务

minute= hour= day= month= weekday= job= name=(必须填写) state=

ansible all-m cron-a"minute=*/10 job='/sbin/ntpdate 10.10.10.10&>/dev/null' name=synctime"可使用crontab-l查看

在管理的主机上可以删除制定的计划任务

10.10.10.4| SUCCESS=>{"changed": true,"envs": [],"jobs": []}

5、fetch模块:和copy相反,从远程主机拷贝文件到本地主机

可以不要flat=yes参数,但作用:

当dest=/root/kel/,abc.txt会保存在/root/kel/目录下

当dest=/root/kel,会拷贝abc.txt文件,并命名成kel

6、file模块:file模块包含了文件、文件夹、超级链接类的创建、拷贝、移动、删除

path=/etc/foo.conf owner=foo group=foo mode=0644

src=/file/to/link/to dest=/path/ro/symlink owner=foo group=foo state=link

src=/tmp/{{item.path}} dest={{item.dest}} state=link with_items:

path=/etc/foo.conf state=touch mode="u=rw,g=w,o=r"

path=/etc/foo.conf state=touch mode="u+w,g-w,o-rw"

7、yum模块:用于yum安装安装和卸载

8、service模块:服务管理

9、user/group模块:user模块管理用户;group模块管理group

四、Playbook剧本

playbook是ansible更强大的配置管理组件,实现基于文本文件编排执行的多个任务,且多次重复执行。playbook组织格式为使用YAML语言来编写的。

playbook是由一个或多个“play”组成的列表。play的主要功能在于将事先归为一组的主机装扮成事先通过ansible中的task定义好的角色。从根本上讲,所谓的task无非是调用ansible的一个module。将多个play组织在一个playbook中,即可以让他们联通起来按事先编排的机制生效。

1、例子:

在ansible主机上的root目录下创建httpd目录,将本机的httpd.conf文件拷贝到该目录下,修改配置文件里的监听端口是8081

remote_user:root#root前不能有空格

tasks:#任务列表

yum name=httpd state=present#yum后的:删除掉

copy src=/root/httpd/httpd.conf dest=/etc/httpd/conf

service name=httpd state=started

注意:yaml文件中支持#;下面的操作要跟上面的name对齐。

测试:

ansible-playbook--check playbook:只检测可能会发生的改变,但不真正执行操作

ansible-playbook playbook:直接执行

ansible-playbook--list-hosts:列出运行任务的主机

2、playbook介绍

设置在特定条件下触发:

a,某任务的状态在运行后为changed时,可通过“notify”通知给相应的handles;

handles:任务在特定条件下触发;接收到其他任务的通知是被触发;

b,任务可以通过“tags”打标签,而后可在ansible-playbook命令上使用-t指定进行调用;

上一篇:爱奇艺进阶礼包怎么领
下一篇:斗战神45移动玉狐加点
相关文章
返回顶部小火箭