Skip to Content

Cihaz Ajanı Komutları

ironflock agent komutları bir Linux makinesini IronFlock’a cihaz olarak bağlar ve o andan itibaren cihaz ajanıyla ilgilenir. Bu komutlarla ajanı kurar, ona başka bir cihaz yapılandırması veya proxy verir, ajanı günceller, durdurur ve başlatır, günlüğünü okur ve ajanı yeniden kaldırırsınız.

Cihaz Ajanı

Cihaz ajanı, bir makineyi IronFlock’a cihaz olarak bağlayan ve cihazın projesindeki uygulamaları Docker’da çalıştıran programdır. Bir makinenin hangi cihaz olacağını, IronFlock Studio’nun her cihaz için verdiği cihaz yapılandırma dosyası (.flock) belirler (Cihaz Bağlama).

KomutNe yaparSorar mı
agent installajanı kurar ve makineyi bir .flock dosyasının cihazı olarak IronFlock’a bağlarevet
agent configurekurulu ajana başka bir .flock dosyası veya başka proxy ayarları verirDocker yeniden başlamadan önce
agent updateajanın kendini kanalındaki sürüme güncellemesini sağlar ve bunu izleryeniden başlatmadan önce
agent removeajanı kaldırır ve kurulumunun değiştirdiklerini geri alırevet, “No” önceden seçili
agent restartajanı yeniden başlatır ve tekrar çalıştığını denetlerhayır
agent stopajanı tekrar başlatılana kadar durdururevet
agent startajanı başlatır ve çalıştığını denetlerhayır
agent logsajanın günlüğünü gösterirhayır

Her ajan komutu root gerektirir ve Linux’ta çalışır. Root olmadan çıkış kodu 3 ile sona erer ve sudo komutunu kendisi çağırmaz (Root Yetkileri). macOS’ta ajan komutları hiçbir şeye bakmadan çıkış kodu 3 ile sona erer; bunları Linux makinesinde ya da Mac’ten --host ile çalıştırın. Bir IronFlockOS cihazında görüntü, ajanı sistemiyle birlikte getirir: agent install ve agent remove orada reddeder, agent configure -c ise cihazı başka bir .flock dosyasıyla kaydeder.

Her komut ayrıca --yes, --json, --download-base, --host, --hosts ve --parallel genel bayraklarını kabul eder (Genel Bayraklar). Bir soru terminal gerektirir; terminal yoksa --yes verin (Sorular ve Onay).

--host ile bir komut SSH üzerinden başka bir makinede çalışır (SSH Üzerinden Uzak Makineler). Aynı anda birkaç makinede (birden fazla kez verilen --host ya da --hosts ile) agent restart, agent start ve agent logs olduğu gibi çalışır, ancak agent logs --follow komutu --json ile çalışmaz. Orada kimseye soru sorulmadığı için agent stop, agent update, agent configure ve agent remove komutları --yes gerektirir; bir .flock dosyası tek bir cihazı belirttiği için de agent configure orada -c almaz. agent install bir seferde tek bir makinede çalışır.

Kurulu Bir Ajanın Görünümü

Yol veya birimNedir
/opt/ironflock/device-agentajanın klasörü: ajan, .flock dosyasının kopyası (device-config.flock) ve son kendi kendini güncellemesinin durumu (update-state.json). Docker’ı kurulum getirdiyse ya da Docker henüz hiçbir şey tutmuyorsa Docker görüntülerini ve konteynerlerini de burada tutar
ironflock-device-agent.serviceajanı çalıştıran systemd hizmeti. Her açılışta başlar
/var/log/ironflock/device-agent.logajanın günlüğü; yalnızca root okuyabilir. agent logs onu gösterir
/opt/ironflock/device-init/installed.jsonkurulumun değiştirdiği her şeyin kaydı. agent remove tam olarak bunu geri alır
/etc/ironflock/proxy.envproxy varsa Docker’ın ve ajanın proxy ayarları. Yalnızca root okuyabilir (mod 0600)

Ajan ayrıca her başlatılışında makinenin birkaç ayarını kendisi yazar: içinde çalıştığı ve onun için bellek ayıran ironflock.slice birimi, systemd watchdog ayarı, çekirdeğin çökme ayarları ve journal boyutu için bir üst sınır.

Daha önceki bir IronFlock yükleyicisinin kurduğu bir makinede ajan hâlâ eski /opt/reagent düzeninde olabilir (hizmet reagent.service, günlük /var/log/reagent.log); ajan bu düzeni kendiliğinden /opt/ironflock/device-agent klasörüne taşır. Bir makinenin hangi düzene sahip olduğunu ironflock status gösterir; aşağıdaki ret durumları bunun önemli olduğu yerleri belirtir.

ironflock agent install

Cihaz ajanını /opt/ironflock/device-agent klasörüne, eksikse Docker’ı ve bir cihazın makine varsayılanlarını kurar ve makineyi .flock dosyasının cihazı olarak IronFlock’a bağlar. Ajan hemen başlar ve o andan itibaren kendini günceller.

ironflock agent install -c <device.flock> [flags]

Çalıştığı sistemler: systemd kullanan, Debian veya Ubuntu tabanlı Linux; IronFlockOS’ta çalışmaz. Root: gerekir. Sorular: paketleri ve Docker’ı kurmadan önce ve her makine varsayılanı için; --yes her soruyu varsayılanıyla yanıtlar.

Makinenin internete, --download-base ile verilen indirme sunucusuna (İndirme Tabanı) ya da .flock dosyasının belirttiği Appliance’ın indirme yansısına (Ajan Nereden Gelir) erişmesi gerekir. Bir cihazın erişmesi gereken ana bilgisayarlar Ağ Gereksinimleri sayfasında listelenir.

BayrakAnlamı
-c, --config <file>cihazın .flock dosyası (zorunlu)
--disable-suspendsystemd uyku hedeflerini maskeler: uyku moduna geçen bir cihaz ağdan düşer
--rebootkurulum bitince yeniden başlatır (gerekli değildir: ajan hemen başlar)
--http-proxy <url>indirmeler, Docker ve ajan için kurumsal HTTP proxy’si; örneğin http://proxy:3128 ya da parola olmadan http://user@proxy:3128
--https-proxy <url>indirmeler, Docker ve ajan için aynı biçimde kurumsal HTTPS proxy’si
--no-proxy <hosts>proxy’yi atlayan, virgülle ayrılmış ana bilgisayarlar; localhost her zaman eklenir
--proxy-password-file <file>tek satırı --http-proxy ve --https-proxy bayraklarının belirttiği kullanıcının parolası olan bir dosya veya pipe (/dev/stdin)

Ajan Nereden Gelir

Ajan; kanal haritası, ikili dosyası ve bu ikili dosyanın .sha256 ve .sig dosyalarından oluşur. Komut bunları şuradan alır:

  1. --download-base, yoksa IRONFLOCK_DL_BASE: yalnızca o sunucu.
  2. Yoksa .flock dosyasının güncelleme sunucusu (update_url) olarak belirttiği IronFlock Appliance’ın indirme yansısı; ana bilgisayarı IronFlock bulutuna ait değilse. Appliance’a erişen ama ironflock.com’a erişemeyen bir makine bu yolla kurulur. IronFlock bulutuna ait bir .flock dosyası bulutu kullanır.
  3. Yoksa IronFlock bulutu, https://instance-registry.ironflock.com/dl.

Komut tabanı stderr’de belirtir: Download base: ... (from the device's .flock), ya da (from --download-base), (from IRONFLOCK_DL_BASE) veya (from default).

Appliance’ın yansısıyla dosyalar önce yansıdan gelir; yansının vermedikleri ise IronFlock bulutunun indirme tabanının altındaki aynı yoldan gelir:

  • Kanal haritası — yansı şu anda harita vermiyorsa (yanıt yok, harita yok, bir hata durumu), her şey buluttan gelir ve sürüm, bulutun haritasının belirttiği sürümdür. Yansının verdiği ama reddedilen bir harita (imzası nedeniyle, sürüm içermediği için) kurulumu, herhangi bir sunucuda olduğu gibi başarısız kılar.
  • İkili dosya, .sha256 ve .sig dosyası — yansının vermediği her biri buluttan gelir. Yansının dosyaları denetimlerden (sağlama toplamı, imza) geçmezse üçü de buluttan gelir.

Her geri dönüş, stderr’de yansıyı, dosyayı ve nedeni belirten bir Warning: ... satırıdır; --json ile de sonuçtaki warnings alanında bir girdidir. Bir dosyayı ne yansı ne de bulut verirse kurulum, iki kaynağı ve iki nedeni belirten tek bir hatayla başarısız olur (neither the appliance's mirror ... nor the IronFlock cloud gives ...).

Yansı, .flock dosyasının güncelleme sunucusudur ve proxy’yi atlar (Proxy). Appliance’ın kendi CA’sından sertifikası olan bir HTTPS yansısı yalnızca makinenin sistemi o CA’ya güveniyorsa çalışır. Dağıtımın paketleri ve Docker yine kendi sunucularından, install.sh ve ironflock ise ironflock.com’dan gelir; --host ile ironflock sizin bilgisayarınızdan makineye gider.

Kurulumdan Önceki Denetimler

Komut, herhangi bir şeyi değiştirmeden önce ironflock doctor denetimlerinden kurulumun başarılı olup olamayacağını gösterenleri çalıştırır: system, systemd, disk_space, clock, dns, proxy, download_tree, device_endpoint, docker_registry ve update_server. Bunlar -c ile verilen .flock dosyası için, kurulumun indirme tabanı ve proxy bayraklarıyla çalışır.

Bunlardan dördü başarısız olduğunda kurulumu durdurur, çünkü kurulum bu durumda kesinlikle ya da yarı yolda başarısız olurdu:

DenetimBaşarısız olduğu durumKurulumun neden durduğu
systemmakine Linux değil ya da apt yokilk adım olan apt başarısız olurdu
systemdsistemi systemd çalıştırmıyorkurulum, ilk değişikliklerini kaydettikten sonra Docker’ı yeniden başlatır ve ajanı systemctl ile başlatır
disk_space/opt içindeki boş alan 128 MiB’ın altındayaklaşık 50 MB olan ajan ikili dosyasının, kurulum sürerken iki kez sığması gerekir
download_treeindirme sunucusu yanıt vermiyor, bu mimari için ajanı yok ya da kurulumun kabul etmediği bir yanıt veriyor; Appliance’ın yansısıyla ajan ne yansıda ne de bulutta varkurulum apt ve Docker’dan sonra, üçüncü adımında başarısız olurdu

Mesaj denetimi, bulgusunu ve ipucunu belirtir. Diğer her bulgu stderr’de bir uyarıdır ve kurulum devam eder: ağ izin verdiğinde ajan bağlanır, güncellenir ve uygulamalarını çeker. warning veya skipped sonucu kurulumu asla durdurmaz. Kurmadan önce her denetimi görmek için ironflock doctor -c device.flock çalıştırın.

Adımlar

  1. Kuracağı paketleri belirtir ve sorar. Bunları apt ile kurar.
  2. Makinede Docker yoksa önce sorar, sonra Docker’ı kurar.
  3. Üretim kanalının ajanını indirir ve sağlama toplamına ve imzasına göre doğrular. Doğrulanmış bir ajan alamayan bir kurulum, sonraki adımların hiçbirine geçmeden burada durur.
  4. Docker’ı yapılandırır: verildiyse proxy’yi ve bu kurulumun getirdiği ya da henüz hiçbir şey tutmayan bir Docker için ajanın klasöründeki data-root’u. Görüntü veya konteyner tutan bir Docker yapılandırmasını ve verilerini korur.
  5. Makine varsayılanlarını ayarlar (aşağıdaki tablo). Her biri terminalde bir seçimdir; --yes varsayılanı alır.
  6. Ajanı /opt/ironflock/device-agent klasörüne kurar ve başlatır.
Makine varsayılanıVarsayılan
proje sahibi için bir SSH kullanıcısı: yalnızca anahtarla oturum açma, sudo ileevet
varsa .flock dosyasındaki WiFievet
uyku modu yok: systemd uyku hedefleri maskelenirhayır; --disable-suspend bunu evet yapar

Kurulum ayrıca bir oturum açma başlığı ekler. Kurulumun değiştirdiği her şey /opt/ironflock/device-init/installed.json dosyasına yazılır. 4. adımdan itibaren bir adım başarısız olursa hata, denemenin kaydedildiğini ve aynı komutun yeniden çalıştırıldığında önce onu geri alacağını söyler. Komut böyle önceki bir deneme bulduğunda, denetimler geçtikten sonra onu geri alır: neyi geri alacağını listeler, sorar ve ardından yeniden kurar.

Proxy

Proxy bayrakları kurulumun indirmeleri, Docker ve ajan için kurumsal proxy’yi ayarlar. Her ayar kendi bayrağından, yoksa HTTP_PROXY, HTTPS_PROXY ve NO_PROXY ortam değişkenlerinden (veya küçük harfli biçimlerinden) gelir.

Bir proxy URL’si http://proxy.example.com:3128 biçimindedir; https:// ve socks5:// de çalışır, şeması olmayan bir URL ise http:// sayılır. Proxy oturum açma gerektirdiğinde URL kullanıcıyı parola olmadan belirtir (http://[email protected]:3128), parolayı ise --proxy-password-file verir. Komut parolayı, kullanıcı belirten bayrakların URL’lerine yerleştirir.

Uyarı: Proxy parolasını asla URL’ye yazmayın. Komut satırları ps çıktısında ve kabuk geçmişinde görünür; bu nedenle parola içeren bir URL hatalı komut satırı olarak reddedilir ve hata mesajı onu tekrarlamaz. Parolayı bir dosyanın tek satırına yazın ya da --proxy-password-file /dev/stdin ile pipe üzerinden verin (Gizli Bilgiler).

--no-proxy ile verilen ana bilgisayarların yanı sıra şunlar da proxy’yi atlar (NO_PROXY): localhost, 127.0.0.1 ve ::1 ile, IronFlock bulutunun ana bilgisayarları olmadıklarında (LAN’daki bir Appliance veya yansı gibi) indirme sunucusu ve .flock dosyasındaki güncelleme sunucusu (update_url). IronFlock bulutunun ana bilgisayarları (ironflock.com, ironflock.dev ve bunların altındaki ana bilgisayarlar ile storage.googleapis.com) internettedir ve proxy üzerinden gider.

Kurulum, Docker’ın ve ajanın proxy’sini yalnızca root’un okuyabildiği /etc/ironflock/proxy.env dosyasına (mod 0600) yazar ve Docker bunu kullanmak için yeniden başlar. docker.service ve ironflock-device-agent.service için ironflock-proxy.conf systemd drop-in dosyaları bu dosyanın adını verir ve kendileri hiçbir ayar içermez; böylece systemctl show her kullanıcıya dosyanın adını söyler, içeriğinden ise hiçbir şey söylemez. Makinenin kendi Docker drop-in dosyası (docker.service.d/http-proxy.conf) kalır; IronFlock’un ayarları onun Environment= satırlarından önceliklidir ve bir uyarı bu dosyayı belirtir. proxies içeren bir daemon.json dosyası bunları korur, çünkü Docker bunları diğer tüm ayarlardan önce alır.

Ayarları daha sonra değiştirmek için agent configure komutunu kullanın. Tüm sahanın proxy’si için bkz. Kurumsal Proxy Arkasında.

Örnekler

# Ajanı kurun; komut her adımdan önce sorar sudo ironflock agent install -c device.flock # Soru sormadan kurun ve cihazın uyku moduna geçmesini engelleyin sudo ironflock agent install -c device.flock --yes --disable-suspend # Oturum açma gerektirmeyen bir proxy arkasında kurun sudo ironflock agent install -c device.flock --https-proxy http://proxy.example.com:3128 # Oturum açma gerektiren bir proxy arkasında kurun; parola bir dosyadan gelir sudo ironflock agent install -c device.flock --https-proxy http://[email protected]:3128 --proxy-password-file proxy-password.txt

Sonuç

$ sudo ironflock agent install -c device.flock --yes Done: the IronFlock device agent runs (systemctl status ironflock-device-agent). The device appears online in IronFlock within a minute.
{"action":"installed","device":"demo-device","agent_version":"1.6.9"}

warnings sonuçta yalnızca bir dosya Appliance’ın yansısı yerine IronFlock bulutundan geldiğinde bulunur: Warning: satırlarında olduğu gibi her dosya için bir girdi.

Reddettiği Durumlar

Hatalı bir komut satırı, herhangi bir şey çalışmadan çıkış kodu 2 ile sona erer: parola içeren bir proxy URL’si; kullanıcı belirten ama --proxy-password-file olmadan verilen bir proxy URL’si; kullanıcı belirten bir proxy URL’si olmadan verilen --proxy-password-file; proxy URL’si olmayan bir değer. Ortamdaki, proxy URL’si olmayan bir proxy değişkeni de buna dahildir; hata değişkenin değerini değil adını belirtir.

Komut şu durumlarda çıkış kodu 3 ile reddeder ve hiçbir şeyi değiştirmez:

  • root olarak çalışmıyorsa ya da makine Linux değilse;
  • makine IronFlockOS çalıştırıyorsa; bu, root olsun ya da olmasın her şeyden önce denetlenir. Görüntü, ajanı ve ironflock aracını sistemiyle birlikte getirir ve her işletim sistemi güncellemesi sistemi bütünüyle değiştirir. Mesaj, cihazın bir sonraki açılışında IRONFLOCKOS bölümündeki bir .flock dosyasıyla kaydolduğunu ve agent configure -c komutunun onu hemen kaydettiğini söyler. IronFlockOS yükleyici belleğinde, belleğin bir cihaz olmadığını söyler;
  • zaten bir ajan kuruluysa, eski /opt/reagent düzeninde de olsa. Mesaj agent configure ve agent remove komutlarını belirtir;
  • ajan makineyi eski düzenden taşıyorsa;
  • önceki bir kurulum ajan kurulmadan önce durmuş, Docker’ın data-root’unu taşımışsa ve Docker o zamandan beri görüntü veya konteyner tutuyorsa: o denemeyi geri almak bunları silerdi;
  • system, systemd, disk_space veya download_tree denetimlerinden biri başarısız olursa. --yes bunu değiştirmez.

Hayır ile yanıtlanan bir soru ya da terminal ve --yes olmadan gelen bir soru komutu çıkış kodu 4 ile sonlandırır. Başarısız olan bir adım onu çıkış kodu 1 ile sonlandırır.

ironflock agent configure

Kurulumun ayarladıklarını değiştirir: cihazın .flock dosyasını, Docker’ın ve ajanın kurumsal proxy’sini ya da ikisini birden. Değişikliği kullanması gerekenleri yeniden başlatır.

ironflock agent configure [-c <device.flock>] [flags]

Çalıştığı sistemler: kurulu bir ajanı olan Linux; IronFlockOS’ta yalnızca -c ile. Root: gerekir. Sorular: Docker yeni proxy ayarları için yeniden başlamadan önce; --yes yanıtlar.

BayrakAnlamı
-c, --config <file>cihazın yeni .flock dosyası
--http-proxy <url>ayarlı olanın yerine Docker’ın ve ajanın HTTP proxy’si
--https-proxy <url>ayarlı olanın yerine Docker’ın ve ajanın HTTPS proxy’si
--no-proxy <hosts>ayarlı olanların yerine proxy’yi atlayan, virgülle ayrılmış ana bilgisayarlar; localhost her zaman eklenir
--proxy-password-file <file>tek satırı proxy URL’lerindeki kullanıcının parolası olan bir dosya veya pipe (/dev/stdin)
--remove-proxyproxy ayarlarını kaldırır: Docker ve ajan doğrudan bağlanır

-c, bir proxy bayrağı ya da ikisini birden verin. İkisi de yoksa değiştirilecek bir şey yoktur: bu hatalı bir komut satırıdır (çıkış kodu 2).

Başka Bir .flock Dosyası

-c ile ajan verilen .flock dosyasını alır ve yeniden başlar: makine o .flock dosyasının cihazı olur. Uygulamalar ve verileri kalır. Kurulum bir SSH kullanıcısı ayarladıysa SSH kullanıcısı .flock dosyasını izler:

  • Aynı proje sahibi, başka bir cihaz anahtarı — eski anahtar artık kabul edilmez, yenisi kabul edilir.
  • Başka bir proje sahibi — yeni sahip kendi SSH kullanıcısını alır; ilk sahibin SSH kullanıcısı ise agent remove komutunun kaldırdığı gibi gider: sudo kuralı, anahtar ve kurulum oluşturduysa ana dizini ile birlikte hesap.
  • Cihaz anahtarı olmayan bir .flock dosyası — SSH kullanıcısı gider ve yerine yenisi gelmez.

Cihaz el değiştirdiğinde komutu çalıştıran kişi, tam da giden hesapla SSH üzerinden bağlanmış ilk sahip olabilir ve bir hesabı kaldırmak onun oturumlarını sona erdirir. Bu nedenle komut şu sırayla çalışır: yeni sahibin hesabını (kullanıcı, anahtar, sudo kuralı) ayarlar, ajanı yeni .flock dosyasıyla yeniden başlatır ve ancak ondan sonra ilk sahibin sudo kuralını, oturumlarını ve hesabını (aynı sahip için yalnızca eski anahtarı) kaldırır. Eski giriş yolu gitmeden önce cihazın yeni bir giriş yolu vardır ve cihaz çevrimiçidir. Oturumlar sona ermeden önce stderr’deki bir satır bunu söyler, örneğin Removing the account anna, ...: a session of anna ends here.

  • Ajan yeni .flock dosyasıyla yeniden başlamazsa ilk sahip erişimini korur: birinin cihaza girebilmesi gerekir.
  • Yalnızca yeni sahibin SSH kullanıcısı başarısız olduysa ilk sahibin erişimi yine de gider: cihaz el değiştirmiştir ve çevrimiçidir.
  • Kimin erişiminin henüz kaldırılacağı /opt/ironflock/device-init/installed.json dosyasına (users_to_remove) kaydedilir. Sonraki her agent configure -c ve agent remove bunu yeniden dener.
  • Yeni .flock dosyasının yeniden ayarladığı bir hesap asla kaldırılmaz (sahip A, sonra B, sonra yine A).
  • İlk değişikliğinden itibaren kaybolan bir terminal veya SSH oturumu komutu durdurmaz.

--host üzerinden, makinedeki .flock kopyası komut onu okur okumaz kaldırılır. --host bayrağının SSH kullanıcısı giden bir hesapsa SSH oturumu hesapla birlikte sona erer: bu durumda çalıştırmanız, kopan bir bağlantıdan sonra olduğu gibi çıkış kodu 255 ile sona erer, makinedeki komut ise sonuna kadar devam eder. Çalıştırmanın ironflock.XXXXXXXXXX klasörü ikili dosyasıyla birlikte makinede kalır; geçici bir klasördeyse o klasör temizlenene kadar kalır, hesabın ana dizinindeyse hesapla birlikte gider.

IronFlockOS’ta

-c ile komut cihazı, IronFlockOS’un her yeni kök yuvasının ilk açılışında kaydettiği gibi kaydeder; bu, kaydolmuş bir cihazda da henüz kaydolmamış bir cihazda da geçerlidir. Verilen .flock dosyası ajanın kopyası olur (/data üzerinde /opt/ironflock/device-agent/device-config.flock) ve cihaz bu dosyadan şu sırayla ayarlanır: proje sahibinin SSH kullanıcısı, WiFi, cihaz adından ana bilgisayar adı (/etc/ironflockos/enroll.conf dosyası hostname-from-flock=no demiyorsa), yeni .flock dosyasıyla yeniden başlatılan ajan ve ardından önceki sahibin erişiminin kaldırılması.

Bir sonraki işletim sistemi güncellemesi yeni kök yuvasını aynı kopyadan kaydeder. Verdiğiniz dosya olduğu yerde kalır. Başarısız olan bir adım ajanın yeni .flock dosyasıyla yeniden başlamasını engellemez, ancak ilk sahibin erişimi ancak ajan yeniden başladıktan sonra gider. Bu durumda komut çıkış kodu 1 ile sona erer ve başarısız olan her adımı belirtir; bunları yinelemek için aynı komutu yeniden çalıştırın.

Proxy bayrakları IronFlockOS’ta reddedilir. IronFlockOS, Docker’ın, ajanın ve sistem saatinin proxy’sini /data üzerindeki /etc/ironflockos/proxy.conf dosyasında tutar; IRONFLOCKOS bölümündeki bir proxy.conf dosyası bir sonraki açılışta onun yerini alır.

Proxy Ayarları

  • Verilen her proxy bayrağı kendi ayarını değiştirir, diğerleri kalır. Tek başına --https-proxy HTTPS proxy’sini değiştirir; HTTP proxy’sini ve proxy’yi atlayan ana bilgisayarları korur.
  • --proxy-password-file ile verilen parola, verilen URL’lerden kullanıcı belirtenlere girer. URL verilmezse cihazın ayarlarındaki kullanıcı belirten URL’lere girer; böylece yeni bir parola yalnızca dosyayla ayarlanır.
  • --no-proxy ve daha önce proxy’si olmayan bir cihazın ilk proxy’si ayrıca localhost, 127.0.0.1, ::1 ile, IronFlock bulutunun bir ana bilgisayarı değilse (bir Appliance’ınki gibi) ajanın .flock dosyasındaki güncelleme sunucusunu da alır.
  • --remove-proxy ayarları kaldırır. Başka hiçbir proxy bayrağıyla birlikte verilemez.
  • Ortamınızdaki proxy değişkenleri burada hiçbir şeyi değiştirmez: yalnızca bayraklar geçerlidir.

Proxy’yi atlayan ana bilgisayarların listesi, --no-proxy başka bir liste vermedikçe komutun bulduğu gibi kalır. Bu liste IronFlock bulutunun bir ana bilgisayarını içerdiğinde bir uyarı onu belirtir ve listeyi onsuz veren agent configure --no-proxy komutunu gösterir. İnternete yalnızca proxy üzerinden erişen bir cihaz, bulutun indirme sunucusu instance-registry.ironflock.com bu listede olduğu sürece ajanını güncelleyemez.

Ayarlar, yalnızca root’un okuyabildiği /etc/ironflock/proxy.env dosyasında tutulur ve docker.service ile ironflock-device-agent.service için ironflock-proxy.conf drop-in dosyaları bu dosyanın adını verir. Ayarlar değiştiğinde komut onları parola olmadan, önceki ve sonraki hâlleriyle gösterir. Ardından Docker ve ajan yeniden başlar. Docker’ı yeniden başlatmak cihazın uygulamalarını kısa bir süre durdurur; bu yüzden komut bunu söyler ve sorar; --yes yanıtlar. Parola stdin üzerinden geldiğinde sorunun sorulacağı bir terminal yoktur: --yes verin.

  • Docker’ın daemon.json dosyası proxies ayarlıyorsa (Docker bunları bu ayarlardan önce alır) ve hiçbir şey değişmiyorsa Docker yeniden başlamaz ve hiçbir şey sorulmaz.
  • Yalnızca drop-in dosyası eksik olan bir birim onu alır ve yalnızca o birim yeniden başlar.
  • Makinenin kendi Docker drop-in dosyası olduğu gibi kalır. Ajanın veya Docker’ın bir proxy değişkeni ayarlayan başka bir drop-in dosyası bir uyarıda belirtilir; IronFlock’un ayarları, ayarladıkları her değişken için onu geçersiz kılar. Her kullanıcının okuyabildiği bir proxy parolası içeren bir drop-in dosyası veya daemon.json da bir uyarıda belirtilir.
  • Docker’ın yeniden başlatılması başarısız olursa ajan yine de yeniden başlar; tersi de geçerlidir. Hata (çıkış kodu 1), hâlâ eski ayarlarla çalışan birimleri ve ayarları uygulayan systemctl restart komutunu belirtir; ikinci bir çalıştırma ayarları yerinde bulur ve hiçbir şeyi yeniden başlatmaz.
  • Ayarlar yazılamadığında hiçbir şey yeniden başlamaz ve hata, komutu yeniden çalıştırmanızı söyler.

Daha eski bir kurulumun http-proxy.conf drop-in dosyalarının Environment= satırlarına yazdığı proxy ayarlarını her kullanıcı, parolası dahil systemctl show ile okuyabilir; bu ayarlar, yalnızca -c ile yapılanlar da dahil olmak üzere her agent configure çalıştırmasıyla /etc/ironflock/proxy.env dosyasına taşınır. Eski dosyaların kopyası tutulmaz. Kural olarak taşıma değerleri korur; bu yüzden hiçbir şeyi yeniden başlatmaz ve hiçbir şey sormaz. Bir birimin kullandığı proxy’yi değiştirdiği yerde komut nedenini söyler, o birimin proxy’sini önceki ve sonraki hâliyle gösterir ve sorar. Ayarlar dosyasının tutamayacağı bir değer (ana bilgisayarda veya atlama listesinde tek tırnak, bir kontrol karakteri) taşınmaz: proxy bayrağı olmayan bir çalıştırma onu bırakır, uyarır ve değeri yeniden veren bayrağı belirtir.

Örnekler

# Bu makineyi başka bir .flock dosyasının cihazı yapın sudo ironflock agent configure -c new-device.flock # Oturum açma gerektiren bir HTTPS proxy'si ayarlayın; parola bir dosyadan gelir sudo ironflock agent configure --https-proxy http://[email protected]:3128 --proxy-password-file proxy-password.txt # Yalnızca yeni bir proxy parolası ayarlayın; parola stdin'den okunur, soru sorulmaz sudo ironflock agent configure --proxy-password-file /dev/stdin --yes < proxy-password.txt # Proxy ayarlarını kaldırın: Docker ve ajan doğrudan bağlanır sudo ironflock agent configure --remove-proxy

Sonuç

$ sudo ironflock agent configure -c new-device.flock Device configuration updated; the agent restarted. $ sudo ironflock agent configure --https-proxy http://[email protected]:3128 --proxy-password-file proxy-password.txt The proxy settings of Docker and the agent change: HTTP proxy: none (unchanged) HTTPS proxy: none -> http://[email protected]:3128 (with a password) No proxy for: localhost,127.0.0.1,::1 Docker restarts for the new settings: the apps of the device stop for a moment and start again. ? Continue? Yes Proxy settings updated: HTTPS through http://[email protected]:3128 (with a password); not for localhost,127.0.0.1,::1. Restarted: docker.service, ironflock-device-agent.service.

IronFlockOS’ta -c kaydı bildirir:

Device configuration updated: this device enrolled as new-device, as IronFlockOS enrolls it at every new root slot; the agent restarted.
{"action":"configured","device":"new-device","restarted":["ironflock-device-agent.service"]}
{"action":"configured","proxy":{"password":false,"changed":true,"moved":false},"restarted":["docker.service","ironflock-device-agent.service"]}
AlanAnlamı
actionkomut bir şeyi değiştirdiğinde configured; hiçbir şey değişmediğinde bulunmaz
device-c ile verilen .flock dosyasının cihazı; -c olmadan bulunmaz
proxybir proxy bayrağıyla ya da eski biçimdeki ayarlar taşındığında bulunur. Şu anki hâlleriyle http_proxy, https_proxy (parola olmadan) ve no_proxy; proxy yoksa bulunmazlar. password: bir URL’de parola var; changed: ayarlar öncekilerden farklı ya da Docker veya ajan bunları bundan sonra alıyor veya başka bir proxy kullanıyor; moved: ayarlar eski biçimdeydi
restartedkomutun yeniden başlattığı birimler

Reddettiği Durumlar

Hatalı bir komut satırı çıkış kodu 2 ile sona erer: değiştirilecek bir şey yok; başka bir proxy bayrağıyla birlikte --remove-proxy; parola içeren bir proxy URL’si; kullanıcı belirten ama --proxy-password-file olmadan verilen bir proxy URL’si; hiçbiri kullanıcı belirtmeyen URL’lerle birlikte --proxy-password-file; proxy URL’si veya ana bilgisayar listesi olmayan bir değer.

Komut şu durumlarda çıkış kodu 3 ile reddeder ve hiçbir şeyi değiştirmez:

  • kurulu ajan yoksa (mesaj agent install komutunu belirtir); IronFlockOS bunun istisnasıdır, orada -c henüz kaydolmamış bir cihazı kaydeder;
  • ajan makineyi eski düzenden taşıyorsa;
  • proxy bayrakları verilmişse ve ajan hâlâ eski /opt/reagent düzeninde çalışıyorsa. Ajan makineyi taşıdıktan sonra (ironflock status düzeni gösterir) aynı komut çalışır;
  • IronFlockOS’ta, -c ile veya olmadan, proxy bayrakları verilmişse;
  • proxy’si olmayan bir cihazda --no-proxy veya --proxy-password-file tek başına verilmişse ya da cihazın hiçbir proxy URL’si kullanıcı belirtmezken parola dosyası tek başına verilmişse;
  • proxy bayrakları, /etc/ironflock/proxy.env dosyasının tutamayacağı eski biçimde bir değeri koruyorsa; mesaj, değeri yeniden veren bayrağı belirtir.

IronFlockOS’ta kayıt .flock dosyasını korumayacaksa -c çıkış kodu 3 ile reddedilir:

  • bir fabrika ayarlarına sıfırlama istenmiş ve henüz başlamamışsa (os reset komutunun yazdığı /boot/efi/factory-reset.conf) ya da başlamışsa (/boot/efi/factory-reset.keep): bir sonraki açılış, komutun ayarladıklarını silerdi;
  • bir fabrika ayarlarına sıfırlama açıksa veya vazgeçmişse ve onunla gelen dosyaları tutuyorsa (/run/ironflockos/factory-reset-hold; ironflock status daha fazlasını söyler);
  • /data bağlanamadıysa; bu durumda ajanın kopyası kök yuvasına düşerdi. O zaman doğru yol IRONFLOCKOS bölümündeki bir .flock dosyasıdır;
  • IRONFLOCKOS bölümünde bir .flock dosyası duruyorsa; cihaz bir sonraki açılışında onunla kaydolur ve mesaj onu belirtir;
  • komut, bir cihaz olmayan IronFlockOS yükleyici belleğinde çalışıyorsa;
  • sistemde /usr/lib/ironflock/image.json yoksa ya da eski düzende bir ajan varsa.

ironflock agent update

Ajanın kendini kanalındaki sürüme güncellemesini sağlar ve ne yaptığını izler. Ajan her başlatılışında daha yeni bir sürüm arar: komut onu yeniden başlatır ve sonucu bildirir. Cihaz IronFlock’ta kısa bir süre çevrimdışı olur; uygulamaları çalışmaya devam eder.

ironflock agent update [flags]

Çalıştığı sistemler: kurulu bir ajanı olan Linux. Root: gerekir. Sorular: bir soru, yeniden başlatmanın ne yapacağını söyledikten sonra; --yes yanıtlar.

Komutun kendine ait bayrağı yoktur ve sürüm almaz. Ajan kanalını (production ya da IronFlock’un test platformunda test) güncelleme sunucusundan izler: bu, .flock dosyasındaki update_url (bir Appliance’ın yansısı), yoksa IronFlock bulutudur. --download-base bunu değiştirmez.

Ajanın yaptıkları, bu sırayla:

  1. Kanalının sürümünü okur. Bu cihazda iki kez başarısız olan bir sürüm, daha yenisi çıkana kadar yeniden indirilmez.
  2. Daha yeni bir sürümü klasörüne indirir ve imzasını denetler.
  3. Yeni sürümü yerine koyar ve indirmeden 10 saniye sonra onunla yeniden başlar. IronFlock’a son bağlantısı 12 dakika ile bir gün önce arasındaysa güncellemeyi bekletir: bir güncelleme, bağlandığı bilinen bir sürümden etkinleştirilir.
  4. Yeni sürüm deneme süresindedir: başlangıcından itibaren 10 dakika içinde IronFlock’a bağlanması ve 2 dakika ayakta kalması gerekir. Bağlanmazsa ya da ondan önce üç kez durursa ajan önceki sürüme döner.
  5. Geri almadan sonra önceki sürümün bağlanması gerekir. Bağlanırsa hata yeni sürümdedir: bir sonraki güncellemede bir kez daha denenir ve ikinci başarısızlığından sonra daha yeni bir sürüme kadar engellenir. Önceki sürüm de 10 dakika içinde bağlanamazsa ajan ağı sorumlu tutar ve yeni sürüm bir sonraki güncellemede yeniden denenir.

Komut bunu ajanın klasöründeki update-state.json dosyasında ve ajanın günlüğünde izler; ikisinden de yeniden başlatmadan önceki kayıtları okumaz. İlerlemesi stderr’e metin satırları olarak gider, --json ile de. Bir indirme, o ana kadar ne kadarını aldığını dakikada bir gösterir.

outcomeAnlamıÇıkış kodu
updatedyeni sürüm deneme süresini geçti0
currentajan zaten kanalının sürümünü çalıştırıyor0
rolled_backyeni sürüm başarısız oldu ve ajan yeniden önceki sürümü çalıştırıyor1
blockedkanalın sürümü bu cihazda daha önce başarısız oldu; ajan onu denemedi1
not_updateddenetim, indirme veya etkinleştirme başarısız oldu ya da ajan güncellemeyi bekletti1

Çıkış kodu 1 ile sonuç yine de yazılır ve stderr Error: satırını alır. --json ile ardından hata nesnesi gelmez: stdout’ta sonuç bulunur.

Örnekler

# Ajanı güncelleyin; komut yeniden başlatmadan önce sorar sudo ironflock agent update # Soru sormadan güncelleyin ve sonucu JSON olarak okuyun sudo ironflock agent update --yes --json

Sonuç

$ sudo ironflock agent update --yes The agent 1.6.9 restarts now and looks for a newer release on its channel: the device is offline in IronFlock for a moment, its apps keep running. A newer release is downloaded and started. It has to connect to IronFlock within 10 minutes and stay up for 2, or the agent goes back to 1.6.9. The agent restarted; it looks for a newer release. Its channel offers 1.7.0: the agent downloads it. Activating 1.7.0: the agent restarts into it. 1.7.0 runs on probation: it has to connect to IronFlock within 10 minutes and stay up for 2. The agent was updated from 1.6.9 to 1.7.0: 1.7.0 connected to IronFlock and passed its probation.

Güncel bir ajan ve yeni sürümü geri alınmış bir ajan:

{"outcome":"current","version":"1.7.0","channel_version":"1.7.0"}
{"outcome":"rolled_back","version":"1.6.9","channel_version":"1.7.0","failed_version":"1.7.0","reason":"did not connect within 10m0s","retry":"next_update"}
AlanDeğerler
actionajan artık daha yeni bir sürüm çalıştırıyorsa updated; aksi hâlde bulunmaz
outcomeyukarıdaki tablodaki gibi
versionşu anda çalışan sürüm
previous_versionupdated ile: önceki sürüm
channel_versionajanın okuduğu şekliyle kanalın sürümü; ajan bunu söylemediyse bulunmaz
failed_versionrolled_back ve blocked ile: başarısız olan sürüm
reasonajanın kendi ifadesiyle, neden başarısız olduğu veya neden güncellenmediği
retryrolled_back ve blocked ile: ajanın başarısız sürümü ne zaman yeniden deneyeceği: next_update, newer_release veya after_judgement (önceki sürümün henüz bağlanması gerekiyor)

Reddettiği Durumlar

Komut şu durumlarda çıkış kodu 3 ile reddeder: kurulu ajan yoksa (mesaj agent install komutunu belirtir), ajan makineyi eski düzenden taşırken, ajan eski düzende çalışıyorsa (güncellemeleri komutun izleyebileceği bir durum tutmaz) ve ajan, birimi altında kendini güncelleyen ilk sürüm olan 1.3.0’dan eskiyse.

Yeniden başlatma başarısız olduğunda ve güncelleme ajanın süreleri içinde ilerlemediğinde, nereye bakılacağını söyleyen bir hatayla çıkış kodu 1 ile başarısız olur. Bu süreler şunlardır: yeniden başlatmadan sonra 3 dakika içinde ajanın denetimi, 30 dakika içinde indirme, 3 dakika içinde etkinleştirme, deneme süresindeki yeni sürümün her başlangıcı için 12 dakika, bir geri almadan sonra ajanın kararı için 12 dakika ve hepsi için toplam 84 dakika. Ajan kendi başına devam eder; nerede olduğunu ironflock status gösterir.

Ctrl-C güncellemeyi değil izlemeyi durdurur ve komutu çıkış kodu 130 ile sonlandırır.

ironflock agent remove

Cihaz ajanını kaldırır ve kurulumunun kaydettiklerini geri alır. Docker’ın kendisi ve paketler kurulu kalır.

ironflock agent remove [flags]

Çalıştığı sistemler: kurulu bir ajanı olan Linux; IronFlockOS’ta çalışmaz. Root: gerekir. Sorular: bir soru, kaldıracaklarını listeledikten sonra. Soruda “No” önceden seçilidir: yalnızca Enter’a basmak hiçbir şeyi kaldırmaz.

Komutun kendine ait bayrağı yoktur. Şunları kaldırır:

  • Ajan — ajan, veritabanı ve /opt/ironflock/device-agent. Docker cihazın uygulamalarını ve verilerini ajanın klasöründe tutuyorsa bunlar da ajanla birlikte gider.
  • SSH kullanıcısı — hesap, yalnızca kurulum onu oluşturduysa. Daha önce var olan bir hesabın authorized_keys dosyasından yalnızca cihaz anahtarı gider; dosya kullanıcıda kalır. agent configure -c ile kaldırılması başarısız olmuş önceki bir proje sahibinin erişimi de gider ve “(a removal that had failed)” notuyla listelenir.
  • Makine varsayılanları — WiFi profili, oturum açma başlığı ve maskelenmiş uyku hedefleri.
  • Kurulumun yazdığı veya değiştirdiği dosyalar — asılları modları, sahipleri ve gruplarıyla geri gelir.
  • Proxy ayarları — /etc/ironflock/proxy.env ile bu dosyanın adını veren drop-in dosyaları ve daha eski bir kurulumun http-proxy.conf drop-in dosyalarında bıraktığı proxy ayarları. Yerlerine hiçbir şey geri gelmez: sonrasında Docker’ın IronFlock’tan gelen bir proxy’si olmaz ve komut proxy parolasını hiçbir yere yazmamış olur. Docker’ın IronFlock’tan gelen bir proxy’si varsa sorudan önceki liste bunu söyler.
  • Ajanın makineye kendisinin yazdığı ayarlar — biriminin 10-ironflock-resources.conf drop-in dosyasıyla birlikte ironflock.slice birimi, systemd watchdog ayarı (/etc/systemd/system.conf.d/10-ironflock-watchdog.conf), çekirdeğin çökme ayarları (/etc/sysctl.d/60-ironflock-crash-recovery.conf; çekirdek bunları bir sonraki açılışa kadar korur) ve journal sınırı (/etc/systemd/journald.conf.d/10-ironflock.conf).
  • Ajanın kayıt defteri oturumları — ajan durduktan sonra komut, .flock dosyasının belirttiği kayıt defteri (docker_registry_url) için ve bir Appliance’ın cihazında registry.<appliance_domain> için docker logout çalıştırır. /root/.docker/config.json dosyasındaki başka hiçbir oturuma dokunulmaz. Eksik veya başarısız olan bir Docker kaldırmayı durdurmaz; bir satır hangi oturumun kaldırılmadığını söyler.

Makinenin kendi Docker drop-in dosyası olduğu gibi kalır. Kaldırma için yeniden başlamayan bir Docker (verileri ajanın klasöründe değildi), bir sonraki yeniden başlatmasına kadar başladığı proxy’yi kullanır.

Komut neyi kaldıracağını stderr’de listeler, ardından sorar. --json ile liste sonucun removed alanıdır. Komut kaldırmaya başladıktan sonra kaybolan bir terminal veya SSH oturumu onu durdurmaz: giden SSH kullanıcısı oturumlarını, belki de komutu çalıştıran oturumu, beraberinde götürür ve kaldırma sonuna kadar devam eder.

Örnekler

# Ajanı kaldırın; komut nelerin gideceğini listeler ve sorar sudo ironflock agent remove # Ajanı soru sormadan kaldırın sudo ironflock agent remove --yes

Sonuç

$ sudo ironflock agent remove --yes This removes: - the agent, its database and /opt/ironflock/device-agent (with Docker's images and containers) - the user operator and its home directory - /etc/profile.d/ironflock-motd.sh The IronFlock device agent was removed from this machine.
{"action":"removed","removed":["the agent, its database and /opt/ironflock/device-agent (with Docker's images and containers)","the user operator and its home directory","/etc/profile.d/ironflock-motd.sh"]}

Reddettiği Durumlar

Komut, kurulu ajan yoksa ve ajan makineyi eski düzenden taşırken çıkış kodu 3 ile reddeder. IronFlockOS’ta, root olsun ya da olmasın, her şeyden önce reddeder: görüntü ajanı sistemiyle birlikte getirir; her işletim sistemi güncellemesi ve bir sonraki kayıt onu yeniden kurardı. Mesaj, cihazı IronFlock’taki kimliği olmadan yeni yazılmış bir IronFlockOS’a döndüren ironflock os reset komutunu belirtir. IronFlockOS yükleyici belleğinde, belleğin bir cihaz olmadığını söyler.

Hayır yanıtı ya da terminal ve --yes olmadan gelen bir soru komutu çıkış kodu 4 ile sonlandırır.

ironflock agent restart

Ajanın hizmetini yeniden başlatır ve ajanın tekrar çalıştığını denetler: biriminin tek bir süreçle beş saniye çalışması gerekir. Cihaz bu saniyeler boyunca IronFlock’ta çevrimdışıdır; uygulamalar çalışmaya devam eder.

ironflock agent restart [flags]

Çalıştığı sistemler: kurulu bir ajanı olan Linux. Root: gerekir. Sorular: yok.

Komutun kendine ait bayrağı yoktur. Hizmet ironflock-device-agent.service birimidir. Ajan üzerinden gelen bir terminalde (IronFlock Studio’daki cihaz terminali ya da IronFlock üzerinden SSH) çalıştırıldığında yeniden başlatma o oturumu sona erdirir; cihaz bir dakika içinde geri gelir.

# Ajanı yeniden başlatın sudo ironflock agent restart # Yeniden başlatın ve yeni süreci JSON olarak okuyun sudo ironflock agent restart --json
$ sudo ironflock agent restart The agent restarted: ironflock-device-agent.service runs, with process 4242.
{"action":"restarted","unit":"ironflock-device-agent.service","state":"running","main_pid":4242}

state, birimin sonraki durumudur ve ironflock status içindeki gibi adlandırılır. main_pid ajanın sürecidir; her yeniden başlatmadan sonra yeni bir süreçtir.

Reddeder (çıkış kodu 3): kurulu ajan yoksa (mesaj agent install -c <file> komutunu belirtir), ajan makineyi eski düzenden taşırken ve systemd ajanın birimini tanımıyorsa (mesaj agent remove komutunu belirtir).

Başarısız olur (çıkış kodu 1): ajan ayağa kalkmazsa, yani systemd birimi başlatamazsa ya da birimin süreci beş saniye içinde sona ererse. Hata birimi ve son günlük satırlarının nerede olduğunu belirtir: ajanın günlüğü (agent logs) ve journal (journalctl -u <unit>).

ironflock agent stop

Ajanın hizmetini durdurur. Cihaz IronFlock’ta çevrimdışı olur ve IronFlock üzerinden uzaktan erişim de ajanla birlikte gider: bu yoldan gelen bir oturum (IronFlock Studio’daki cihaz terminali, IronFlock üzerinden SSH) sona erer ve ajan tekrar çalışana kadar IronFlock cihaza erişemez. Uygulamalar çalışmaya devam eder, çünkü onları ajan değil Docker çalıştırır.

ironflock agent stop [flags]

Çalıştığı sistemler: kurulu bir ajanı olan Linux. Root: gerekir. Sorular: bir soru, ajanı durdurmanın neyi sona erdireceğini söyledikten sonra; --yes yanıtlar.

Komutun kendine ait bayrağı yoktur. Ajanı agent start tekrar başlatır; bir sonraki açılış da başlatır. Durdurulmuş bir ajan IronFlock üzerinden tekrar başlatılamaz. Çalışmayan bir ajanda durdurulacak bir şey yoktur; bu durumda komut hiçbir şey sormaz ve sonuçta action bulunmaz.

# Ajanı durdurun; komut bunun neyi sona erdireceğini söyler ve sorar sudo ironflock agent stop # Soru sormadan durdurun sudo ironflock agent stop --yes
$ sudo ironflock agent stop --yes Stopping the agent (ironflock-device-agent.service) takes this device offline in IronFlock. The remote access through IronFlock goes with it: a session that came that way (the device's terminal in Studio, SSH through IronFlock) ends. The apps keep running. 'sudo ironflock agent start' starts the agent again, and so does the next boot. The agent is stopped (ironflock-device-agent.service): the device is offline in IronFlock, and its apps keep running. 'sudo ironflock agent start' starts the agent again.
{"action":"stopped","unit":"ironflock-device-agent.service","state":"stopped"}

Reddeder (çıkış kodu 3): agent restart ile aynı durumlarda. Hayır yanıtı ya da terminal ve --yes olmadan gelen bir soru komutu çıkış kodu 4 ile sonlandırır.

ironflock agent start

Çalışmıyorsa ajanın hizmetini başlatır ve agent restart gibi ajanın ayağa kalktığını denetler: biriminin tek bir süreçle beş saniye çalışması gerekir. Zaten çalışan bir ajana dokunulmaz ve bu durumda sonuçta action bulunmaz.

ironflock agent start [flags]

Çalıştığı sistemler: kurulu bir ajanı olan Linux. Root: gerekir. Sorular: yok. Komutun kendine ait bayrağı yoktur.

# Ajanı başlatın sudo ironflock agent start # Başlatın ve sürecini JSON olarak okuyun sudo ironflock agent start --json
$ sudo ironflock agent start The agent started: ironflock-device-agent.service runs, with process 4242. The device appears online in IronFlock within a minute.

--json ile, zaten çalışan bir ajan için:

{"unit":"ironflock-device-agent.service","state":"running","main_pid":4242}

Reddeder ve başarısız olur, agent restart gibi: kurulu ajan yoksa, ajan makineyi eski düzenden taşırken ve systemd ajanın birimini tanımıyorsa çıkış kodu 3; ajan ayağa kalkmazsa çıkış kodu 1.

ironflock agent logs

Ajanın günlüğünü, yani /var/log/ironflock/device-agent.log dosyasını ve ajanın bu günlüğü döndürerek oluşturduğu dosyaları gösterir. Hiçbir şeyi değiştirmez.

ironflock agent logs [flags]

Çalıştığı sistemler: kurulu bir ajanı olan Linux; dosyaları okur ve systemd gerektirmez. Root: gerekir, çünkü ajan günlüğünü yalnızca root için yazar (mod 0600). Sorular: yok.

BayrakAnlamı
--lines <n>son n satır ya da all. Varsayılan: 100; --since ile o zamandan beri her satır
--since <time>belirli bir zamandan itibaren satırlar: şimdiden geriye bir süre (90s, 10m, 2h, 1h30m veya tam günler: 3d) ya da bir zaman: 2026-11-10T09:00:00Z veya saat farkıyla, 2026-11-10 09:00, 2026-11-10 09:00:05, 2026-11-10 (o günün gece yarısı), 09:00 (bugün). Saat dilimi olmayan bir zaman makinenin saat dilimindedir
--followsatırlardan sonra, Ctrl-C’ye kadar ajanın yazdığı yeni satırları gösterir

Ajan, günlüğü 100 MB’a ulaştığında onu aynı klasörde device-agent-<time>.log olarak yeniden adlandırır ve yeni bir günlük başlatır; bunlardan ikisini tutar. Komut günlüğü ve bu dosyaları okur.

Ajan her satıra bir JSON nesnesi yazar: girdinin zamanı (saniyesine kadar), düzeyi, mesajı ve başka alanlar. Metin biçimi bir girdiyi IronFlock Studio’nun ajanın günlüğünü gösterdiği gibi gösterir: UTC olarak zaman, düzey, mesaj ve hatası. Bir çökmenin yığın izi gibi girdi olmayan bir satır olduğu gibi gösterilir. Kontrol karakterleri kaçış dizileriyle yazılır (\n, \x1b); böylece bir girdi terminalde tek satırdır ve terminali yönlendiremez. --json ile her satır stdout’ta tek bir JSON nesnesidir: ajanın yazdığı şekliyle, tüm alanlarıyla girdi ya da girdi olmayan bir satır için {"message":...}.

  • --since, o zamandaki veya sonraki ilk girdiyle başlar. Satırlar ajanın yazdığı sırada kalır. Zamanı olmayan bir satır kendinden önceki girdiye aittir.
  • --follow ile bir satır tamamlandığında gösterilir. Ajan yeni bir dosya başlattığında önce eski dosyanın geri kalanı, ardından yeni dosya başından itibaren gelir. Henüz var olmayan bir günlük beklenir. Ctrl-C komutu çıkış kodu 0 ile sonlandırır; --host üzerinden Ctrl-C çalıştırmayı çıkış kodu 130 ile sonlandırır.
  • Ajan henüz hiç günlük yazmadıysa stderr bunu söyler, stdout boş kalır ve çıkış kodu 0 olur.

Örnekler

# Son 100 satır sudo ironflock agent logs # Son bir saatin tamamı sudo ironflock agent logs --since 1h # Son 20 satır, ardından Ctrl-C'ye kadar her yeni satır sudo ironflock agent logs --follow --lines 20 # Son on dakika JSON olarak, satır başına bir nesne sudo ironflock agent logs --since 10m --json

Sonuç

$ sudo ironflock agent logs --lines 3 2026-11-10T11:58:02Z INFO connected to IronFlock 2026-11-10T11:58:03Z INFO 3 apps running 2026-11-10T11:59:40Z ERROR pulling demo-app:1.2 failed: context deadline exceeded
{"level":"info","time":"2026-11-10T11:58:02Z","caller":"agent.go:212","message":"connected to IronFlock"}

Reddettiği Durumlar

Ne süre ne de zaman olan bir --since, negatif bir süre ve ne sayı ne de all olan bir --lines hatalı komut satırlarıdır (çıkış kodu 2). Komut, root olarak çalışmadığında ve kurulu ajan olmadığında çıkış kodu 3 ile reddeder (mesaj agent install -c <file> komutunu belirtir).

Last updated on