This commit is contained in:
Roger Rutishauser 2024-10-02 18:40:26 +02:00
parent 7746597ae3
commit 4189f8dcf7
2 changed files with 102 additions and 44 deletions

View File

@ -17,25 +17,37 @@ Inventory = Listen von Ziel-Hosts, auf die Ansible zugreifen soll, mit Gruppen.
Bei Aufruf von Roles in Playbooks können Tags hinzugefügt werden, sodass später nur einzelne roles ausgeführt werden können, anstatt alle. Bei Aufruf von Roles in Playbooks können Tags hinzugefügt werden, sodass später nur einzelne roles ausgeführt werden können, anstatt alle.
Aufruf eines .yml Playbooks: Aufruf eines .yml Playbooks:
```ansible-playbook -i [inventory] filename.yml```
```
¨ansible-playbook -i [inventory] filename.yml
```
## Testumgebung Lokal ## Testumgebung Lokal
- target-server (vagrant ubuntu) starten (nicht über virtualtoolbox starten!) - target-server (vagrant ubuntu) starten (nicht über virtualtoolbox starten!)
* cmd: ''cd c:\entwicklung\ansible-test-host\'' - cmd: `cd c:\entwicklung\ansible-test-host: `
* cmd: ''vagrant up'' - cmd: `vagrant up`
* um von cmd in die shell zu wechseln (ist aber nicht nötig, ausser man will resultate von ansible befehlen anschauen gehen): cmd: ''vagrant ssh'' - um von cmd in die shell zu wechseln (ist aber nicht nötig, ausser man will resultate von ansible befehlen anschauen gehen): cmd: `vagrant ssh`
- Windows Ubuntu App starten - WSL starten
* weil key auf host geändert hat, muss neuer key angepasst werden. \\ ''ssh-keygen -f "/home/roru/.ssh/known_hosts" -R "[127.0.0.1]:2222"'' - weil key auf host geändert hat, muss neuer key angepasst werden. `ssh-keygen -f "/home/roru/.ssh/known_hosts" -R "[127.0.0.1]:2222"`
* ''ssh 127.0.0.1 -p2222'' - `ssh 127.0.0.1 -p2222`
* check ob target erreichbar: ''ansible -i "127.0.0.1," -e "ansible_port=2222 ansible_user=vagrant" -m ping all'' - check ob target erreichbar: `ansible -i "127.0.0.1," -e "ansible_port=2222 ansible_user=vagrant" -m ping all`
## Playbook ausführen ## Playbook ausführen
```ansible-playbook -i "127.0.0.1," -e "ansible_port=2222 ansible_user=vagrant" webserver.yml```
```
ansible-playbook -i "127.0.0.1," -e "ansible_port=2222 ansible_user=vagrant" webserver.yml
```
oder, wenn eintrag in `/etc/ansible/hosts`: oder, wenn eintrag in `/etc/ansible/hosts`:
```ansible-playbook webserver.yml```
```
ansible-playbook webserver.yml
```
eintrag wäre z.B.: eintrag wäre z.B.:
``` ```
[testumgenbung] [testumgenbung]
local ansible_host=127.0.0.1 ansible_port=2222 ansible_user=vagrant local ansible_host=127.0.0.1 ansible_port=2222 ansible_user=vagrant
@ -44,6 +56,7 @@ local ansible_host=127.0.0.1 ansible_port=2222 ansible_user=vagrant
mit `--check --diff` am schluss wird Ausführung nur simuliert. mit `--check --diff` am schluss wird Ausführung nur simuliert.
## Beispiel Playbook (mit Endung `.yml`) ## Beispiel Playbook (mit Endung `.yml`)
``` ```
--- ---
- hosts: local - hosts: local

View File

@ -40,42 +40,59 @@ ON CREATE SET n.nicknames=["J"];
Kombiniert: Kombiniert:
```MERGE (n :Student {name:"Jack",age:22}) ```
MERGE (n :Student {name:"Jack",age:22})
ON CREATE SET n.nicknames=["Jacko"] ON CREATE SET n.nicknames=["Jacko"]
ON MATCH SET n.nicknames=["Jackie"];``` ON MATCH SET n.nicknames=["Jackie"];
```
#### Select #### Select
Match all nodes with label "Student", show name and first of the nickname(s) Match all nodes with label "Student", show name and first of the nickname(s)
```MATCH (n :Student) RETURN n.name, n.nicknames[0];``` ```
```MATCH (rog :Student {name: "Roger"}), (tim :Student {name: "Timothy"}) RETURN rog, tim``` MATCH (n :Student) RETURN n.name, n.nicknames[0];
```
```
MATCH (rog :Student {name: "Roger"}), (tim :Student {name: "Timothy"}) RETURN rog, tim
```
##### Where clause ##### Where clause
Match all nodes with label "Student" and name "Tim" Match all nodes with label "Student" and name "Tim"
```MATCH (n :Student { name:"Roger" } ) RETURN n; ```
MATCH (n :Student { name:"Roger" } ) RETURN n;
is the same as: is the same as:
MATCH (n :Student ) WHERE n.name="Roger" RETURN n;``` MATCH (n :Student ) WHERE n.name="Roger" RETURN n;
```
###### AND ###### AND
```MATCH (n :Student ) WHERE n.name="Roger" AND n.age=42 RETURN n;``` ```
MATCH (n :Student ) WHERE n.name="Roger" AND n.age=42 RETURN n;
```
###### OR ###### OR
```MATCH (n :Student ) WHERE n.name="Roger" OR n.age=21 RETURN n;``` ```
MATCH (n :Student ) WHERE n.name="Roger" OR n.age=21 RETURN n;
```
###### NOT ###### NOT
```MATCH (n) WHERE n.name<>"Roger" AND n.name<>"Josh" RETURN n; ```
MATCH (n) WHERE n.name<>"Roger" AND n.name<>"Josh" RETURN n;
oder oder
MATCH (n) WHERE NOT n.name="Roger" AND NOT n.name="Josh" RETURN n;``` MATCH (n) WHERE NOT n.name="Roger" AND NOT n.name="Josh" RETURN n;
```
###### Smaller/Larger ###### Smaller/Larger
```MATCH (n) WHERE n.age>=21 RETURN n;``` ```
MATCH (n) WHERE n.age>=21 RETURN n;
```
#### Update #### Update
@ -83,29 +100,39 @@ MATCH (n) WHERE NOT n.name="Roger" AND NOT n.name="Josh" RETURN n;```
Student "Tim" name auf "Timothy" ändern. Student "Tim" name auf "Timothy" ändern.
```MATCH (n :Student { name:"Tim" }) SET n.name="Timothy" RETURN n;``` ```
MATCH (n :Student { name:"Tim" }) SET n.name="Timothy" RETURN n;
```
##### Update Label ##### Update Label
Give the label with name "Roger" the labels "Student" and "Teacher". Give the label with name "Roger" the labels "Student" and "Teacher".
```MATCH (n {name:"Roger"}) SET n:Student, n:Teacher RETURN n;``` ```
MATCH (n {name:"Roger"}) SET n:Student, n:Teacher RETURN n;
```
#### Remove #### Remove
Entfernen zweier Labels vom Node: Entfernen zweier Labels vom Node:
```MATCH (n :Student {name:"Roger"}) REMOVE n:Teacher, n:Student RETURN n;``` ```
MATCH (n :Student {name:"Roger"}) REMOVE n:Teacher, n:Student RETURN n;
```
Entfernen der Property address: Entfernen der Property address:
```MATCH (n :Student {name:"Roger"}) REMOVE n.address RETURN n;``` ```
MATCH (n :Student {name:"Roger"}) REMOVE n.address RETURN n;
```
#### Delete #### Delete
Löschen eines Nodes Löschen eines Nodes
```MATCH (n :User) DELETE n RETURN n;``` ```
MATCH (n :User) DELETE n RETURN n;
```
### Relations ### Relations
@ -121,56 +148,72 @@ Löschen eines Nodes
Create a Uni-Directional Relationship between Roger and Timothy called "Friend". Create a Uni-Directional Relationship between Roger and Timothy called "Friend".
```MATCH (rog :Student {name: "Roger"}), (tim :Student {name: "Timothy"}) ```
MATCH (rog :Student {name: "Roger"}), (tim :Student {name: "Timothy"})
CREATE (rog)-[:FRIEND]->(tim) CREATE (rog)-[:FRIEND]->(tim)
RETURN rog, tim``` RETURN rog, tim
```
Hier noch mit einer Relation Property Hier noch mit einer Relation Property
```MATCH (rog :Student {name: "Roger"}), (tim :Student {name: "Timothy"}) ```
MATCH (rog :Student {name: "Roger"}), (tim :Student {name: "Timothy"})
CREATE (rog)-[r :FRIEND {nickname:"Timmi"}]->(tim) CREATE (rog)-[r :FRIEND {nickname:"Timmi"}]->(tim)
RETURN rog, r, tim``` RETURN rog, r, tim
```
Um eine Bi-Directional Relation zu machen, muss einfach noch der umgekehrte Weg gemacht werden: Um eine Bi-Directional Relation zu machen, muss einfach noch der umgekehrte Weg gemacht werden:
```MATCH (rog :Student {name: "Roger"}), (tim :Student {name: "Timothy"}) ```
MATCH (rog :Student {name: "Roger"}), (tim :Student {name: "Timothy"})
CREATE (rog)<-[r :FRIEND {nickname:"Rocket"}]-(tim) CREATE (rog)<-[r :FRIEND {nickname:"Rocket"}]-(tim)
RETURN rog, r, tim``` RETURN rog, r, tim
```
Bi-Directional auf einen Chlapf: Bi-Directional auf einen Chlapf:
```MATCH (rog :Student {name: "Roger"}), (jac :Student {name: "Jack"}) ```
MATCH (rog :Student {name: "Roger"}), (jac :Student {name: "Jack"})
CREATE (rog)-[r1 :FRIEND {nickname:"Rocket"}]->(jac)<-[r2 :FRIEND {nickname:"jaccc"}]-(rog) CREATE (rog)-[r1 :FRIEND {nickname:"Rocket"}]->(jac)<-[r2 :FRIEND {nickname:"jaccc"}]-(rog)
RETURN rog, r1, r2, jac``` RETURN rog, r1, r2, jac
```
#### Select #### Select
Select Relationship between 2 nodes Select Relationship between 2 nodes
```MATCH (rog :Student {name:"Roger"})-[r]-(tim :Student {name:"Timothy"}) ```
RETURN rog, r, tim``` MATCH (rog :Student {name:"Roger"})-[r]-(tim :Student {name:"Timothy"})
RETURN rog, r, tim
```
#### Update #### Update
Update Relationship Property Update Relationship Property
```MATCH (:Student {name: "Roger"})<-[r:FRIEND]-(:Student {name: "Timothy"}) ```
MATCH (:Student {name: "Roger"})<-[r:FRIEND]-(:Student {name: "Timothy"})
SET r.nickname = "Rog" SET r.nickname = "Rog"
RETURN r``` RETURN r
```
#### Delete #### Delete
Löschen einer Relationship. Roger will nicht mehr Freund von Timothy sein. Löschen einer Relationship. Roger will nicht mehr Freund von Timothy sein.
```MATCH (rog :Student {name:"Roger"})-[r:FRIEND]->(tim :Student {name:"Timothy"}) ```
MATCH (rog :Student {name:"Roger"})-[r:FRIEND]->(tim :Student {name:"Timothy"})
DELETE r DELETE r
RETURN rog, r, tim``` RETURN rog, r, tim
```
oder für alle Directions: oder für alle Directions:
```MATCH (rog :Student {name:"Roger"})-[r:FRIEND]-(tim :Student {name:"Timothy"}) ```
MATCH (rog :Student {name:"Roger"})-[r:FRIEND]-(tim :Student {name:"Timothy"})
DELETE r DELETE r
RETURN rog, r, tim``` RETURN rog, r, tim
```
### Node and Relation ### Node and Relation
@ -213,6 +256,8 @@ RETURN rog, dav, type(r1), r1, type(r2), r2;
Assuming Roger and Dave alredy exists, and they are connected by relationship `CLASSMATE`. Assuming Roger and Dave alredy exists, and they are connected by relationship `CLASSMATE`.
`CREATE UNIQUE` Will create the relationship and the new node if it is not there (completely, relationship AND node). There is no relationship `FRIEND`, so it will create a new node `Dave` even though `Dave` already exists, but this time with the relationship `FRIEND`. So we have `Roger` and 2 times `Dave`, one with relation `CLASSMATE` and the other with relation `FRIEND`. `CREATE UNIQUE` Will create the relationship and the new node if it is not there (completely, relationship AND node). There is no relationship `FRIEND`, so it will create a new node `Dave` even though `Dave` already exists, but this time with the relationship `FRIEND`. So we have `Roger` and 2 times `Dave`, one with relation `CLASSMATE` and the other with relation `FRIEND`.
```MATCH (rog :Student {name: 'Roger'}) ```
MATCH (rog :Student {name: 'Roger'})
CREATE UNIQUE (rog)-[r :FRIEND]->(dav :Student {name:"Dave", age:25}) CREATE UNIQUE (rog)-[r :FRIEND]->(dav :Student {name:"Dave", age:25})
RETURN rog, type(r), dav;``` RETURN rog, type(r), dav;
```