<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="it">
	<id>https://wiki.gazzi.net/index.php?action=history&amp;feed=atom&amp;title=Tips_Automation%2FApache_Airflow</id>
	<title>Tips Automation/Apache Airflow - Cronologia</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.gazzi.net/index.php?action=history&amp;feed=atom&amp;title=Tips_Automation%2FApache_Airflow"/>
	<link rel="alternate" type="text/html" href="https://wiki.gazzi.net/index.php?title=Tips_Automation/Apache_Airflow&amp;action=history"/>
	<updated>2026-05-02T05:04:11Z</updated>
	<subtitle>Cronologia della pagina su questo sito</subtitle>
	<generator>MediaWiki 1.40.1</generator>
	<entry>
		<id>https://wiki.gazzi.net/index.php?title=Tips_Automation/Apache_Airflow&amp;diff=589&amp;oldid=prev</id>
		<title>Admin: Creata guida installazione e configurazione Apache Airflow</title>
		<link rel="alternate" type="text/html" href="https://wiki.gazzi.net/index.php?title=Tips_Automation/Apache_Airflow&amp;diff=589&amp;oldid=prev"/>
		<updated>2026-03-16T09:57:35Z</updated>

		<summary type="html">&lt;p&gt;Creata guida installazione e configurazione Apache Airflow&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Nuova pagina&lt;/b&gt;&lt;/p&gt;&lt;div&gt;__NOTOC__&lt;br /&gt;
= Apache Airflow =&lt;br /&gt;
&lt;br /&gt;
Guida pratica per installare e configurare Apache Airflow in ambiente Linux, con esempio rapido su Debian/Ubuntu orientato a uso operativo.&lt;br /&gt;
&lt;br /&gt;
== Prerequisiti ==&lt;br /&gt;
* host Linux aggiornato&lt;br /&gt;
* Python 3.10+ consigliato&lt;br /&gt;
* accesso shell con permessi sudo&lt;br /&gt;
* database SQLite (test) o PostgreSQL (produzione)&lt;br /&gt;
&lt;br /&gt;
== Installazione base (standalone, test/lab) ==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo apt update&lt;br /&gt;
sudo apt install -y python3 python3-venv python3-pip&lt;br /&gt;
&lt;br /&gt;
mkdir -p ~/airflow-home&lt;br /&gt;
cd ~/airflow-home&lt;br /&gt;
python3 -m venv .venv&lt;br /&gt;
source .venv/bin/activate&lt;br /&gt;
&lt;br /&gt;
export AIRFLOW_HOME=~/airflow&lt;br /&gt;
pip install --upgrade pip setuptools wheel&lt;br /&gt;
pip install &amp;quot;apache-airflow==2.10.5&amp;quot; --constraint &amp;quot;https://raw.githubusercontent.com/apache/airflow/constraints-2.10.5/constraints-3.10.txt&amp;quot;&lt;br /&gt;
&lt;br /&gt;
airflow standalone&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dopo il primo avvio, apri la UI su porta 8080 e salva le credenziali mostrate in output.&lt;br /&gt;
&lt;br /&gt;
== Configurazione essenziale ==&lt;br /&gt;
=== Variabili ambiente ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
export AIRFLOW_HOME=~/airflow&lt;br /&gt;
export AIRFLOW__CORE__LOAD_EXAMPLES=False&lt;br /&gt;
export AIRFLOW__WEBSERVER__EXPOSE_CONFIG=False&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Percorso DAG ===&lt;br /&gt;
Per default i DAG vivono in:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$AIRFLOW_HOME/dags&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Esempio DAG minimo ===&lt;br /&gt;
Crea file `$AIRFLOW_HOME/dags/hello_airflow.py`:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
from datetime import datetime&lt;br /&gt;
from airflow import DAG&lt;br /&gt;
from airflow.operators.bash import BashOperator&lt;br /&gt;
&lt;br /&gt;
with DAG(&lt;br /&gt;
    dag_id=&amp;quot;hello_airflow&amp;quot;,&lt;br /&gt;
    start_date=datetime(2025, 1, 1),&lt;br /&gt;
    schedule=&amp;quot;0 * * * *&amp;quot;,&lt;br /&gt;
    catchup=False,&lt;br /&gt;
    tags=[&amp;quot;tips&amp;quot;, &amp;quot;automation&amp;quot;],&lt;br /&gt;
):&lt;br /&gt;
    hello = BashOperator(&lt;br /&gt;
        task_id=&amp;quot;hello&amp;quot;,&lt;br /&gt;
        bash_command=&amp;quot;echo &amp;#039;Airflow operativo su GazziNet&amp;#039;&amp;quot;&lt;br /&gt;
    )&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Avvio come servizio (systemd, esempio) ==&lt;br /&gt;
Per ambienti persistenti conviene separare scheduler e webserver.&lt;br /&gt;
&lt;br /&gt;
=== airflow-webserver.service ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[Unit]&lt;br /&gt;
Description=Airflow Webserver&lt;br /&gt;
After=network.target&lt;br /&gt;
&lt;br /&gt;
[Service]&lt;br /&gt;
User=airflow&lt;br /&gt;
Group=airflow&lt;br /&gt;
Environment=&amp;quot;AIRFLOW_HOME=/opt/airflow&amp;quot;&lt;br /&gt;
ExecStart=/opt/airflow/.venv/bin/airflow webserver&lt;br /&gt;
Restart=always&lt;br /&gt;
&lt;br /&gt;
[Install]&lt;br /&gt;
WantedBy=multi-user.target&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== airflow-scheduler.service ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[Unit]&lt;br /&gt;
Description=Airflow Scheduler&lt;br /&gt;
After=network.target&lt;br /&gt;
&lt;br /&gt;
[Service]&lt;br /&gt;
User=airflow&lt;br /&gt;
Group=airflow&lt;br /&gt;
Environment=&amp;quot;AIRFLOW_HOME=/opt/airflow&amp;quot;&lt;br /&gt;
ExecStart=/opt/airflow/.venv/bin/airflow scheduler&lt;br /&gt;
Restart=always&lt;br /&gt;
&lt;br /&gt;
[Install]&lt;br /&gt;
WantedBy=multi-user.target&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Sicurezza minima consigliata ==&lt;br /&gt;
* non esporre Airflow direttamente su internet senza reverse proxy&lt;br /&gt;
* usare HTTPS e autenticazione forte&lt;br /&gt;
* separare credenziali in variabili/profili dedicati&lt;br /&gt;
* limitare permessi utente di servizio&lt;br /&gt;
&lt;br /&gt;
== Troubleshooting rapido ==&lt;br /&gt;
* DAG non visibile: controlla path, permessi e parsing nel log scheduler&lt;br /&gt;
* task in errore: verifica connessioni, variabili, timeout e retry&lt;br /&gt;
* webserver lento: valuta executor e risorse host&lt;br /&gt;
&lt;br /&gt;
== Riferimenti ==&lt;br /&gt;
* [https://airflow.apache.org/docs/ Apache Airflow Documentation]&lt;br /&gt;
* [[Tips Automation]]&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
</feed>