ansibel学习总结
基本语法
列表和字典层级要分明,冒号后面加空格,如下面的例子,刚开始学习的时候,冒号后面没有加空格,导致失败。
- hosts: httpd
remote_user: root
tasks:
- name: install httpd
yum: name=httpd state=present
- name: start httpd service
service: name=httpd state=started
ansible的列表和字典
列表:每一个列表成员前面都要有一个短横线和一个空格
fruits:
- Apple
- Orange
- Strawberry
- Mango
或者:
fruits: ['Apple', 'Orange', 'Strawberry', 'Mango']
字典:每一个成员由键值对组成,注意冒号后面要有空格
martin:
name: Martin D'vloper
job: Developer
skill: Elite
或者
martin: {name: Martin D'vloper, job: Developer, skill: Elite}
实验生成密钥
[root@localhost ~]# ssh-keygen -t rsa <== 建立密钥对,-t代表类型,有RSA和DSA两种
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa): <==密钥文件默认存放位置,按Enter即可
Created directory '/root/.ssh'.
Enter passphrase (empty for no passphrase): <== 输入密钥锁码,或直接按 Enter 留空
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:K1qy928tkk1FUuzQtlZK+poeS67vIgPvHw9lQ+KNuZ4 root@localhost.localdomain
The key's randomart image is:
+---[RSA 2048]----+
| +. |
| o * . |
| . .O + |
| . *. * |
| S =+ |
| . =... |
| .oo =+o+ |
| ==o+B*o. |
| oo.=EXO. |
+----[SHA256]-----+
---------------------
传输公钥:
传输公钥时ip地址后面不见任何东西,默认会在/root下生成.shh,并把公钥传在他的下面
[root@localhost ~]# ssh-copy-id -i ~/.ssh/id_rsa.pub root@172.16.8.11
yum模块的学习
参数名 是否必须 默认值 选项值 参数说明
conf_file 不 设定远程yum执行时所依赖的yum配置文件
disable_gpg_check 不 No Yes/No 在安装包前检查包,只会影响state参数为present或者latest的时候
list No 只能由ansible调用,不支持playbook,这个干啥的大家都懂
name Yes 你需要安装的包的名字,也能如此使用name=python=2.7安装python2.7
state no present present/latest/absent 用于描述安装包最终状态,present/latest用于安装包,absent用于remove安装包
update_cache no no yes/no 用于安装包前执行更新list,只会影响state参数为present/latest的时候
service模块的学习
名称 必选 默认值 可选值 备注
argument no 如果打开这个标记,backrefs会改变模块的一些操作:insertbefore和insertafter参数会被忽略。当regexp不匹配文件中的任何行时,文件不会做任何修改,否则 使用扩展的line参数 替换 最后一个匹配正则表达式的行
enabled no yes/no 服务是否开机自动启动。enabled和state至少要有一个被定义
name yes 服务名称
pattern no 如果服务没有响应,则ps查看是否具有指定参数的进程,有则认为服务已经启动
sleep no EOF EOF/*regex* 如果服务被重新启动,则睡眠多少秒再执行停止和启动命令
state no started,stopped,restarted,reloaded service最终操作后的状态
举例,远程在centos6.5系统上安装mysql
- hosts: mysqld
remote_user: root
tasks:
- name: install mysqld
yum: name=mysql state=present
- name: install mysql-devel
yum: name=mysql-devel state=present
- name: install mysql-server
yum: name=mysql-server state=present
- name: start mysqld service
service: name=mysqld state=started
远程在centos7上部署mariadb
- hosts: mariadb
remote_user: root
tasks:
- name: install mariadb
yum: name=mariadb-server state=present
- name: start mariadb service
service: name=mariadb state=started
-------------------------------------------------------
- hosts: mariadb
remote_user: root
tasks:
- name: install mariadb
yum: name=mariadb-server state=present
- name: start mariadb service
systemd: name=mariadb state=started
用systemd或者service模块都可以(都实验成功)